Skip to content

Instantly share code, notes, and snippets.

@gaebor
Last active March 17, 2016 12:39
Show Gist options
  • Save gaebor/4e8155be57f3d59a8369 to your computer and use it in GitHub Desktop.
Save gaebor/4e8155be57f3d59a8369 to your computer and use it in GitHub Desktop.
theano demo 1
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"import numpy\n",
"import theano\n",
"import theano.tensor as T"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# usual `numpy` function"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"x=numpy.arange(1,4).astype(numpy.float32)\n",
"print(x)\n",
"def f(x):\n",
" return x.dot(x)\n",
"print(f(x))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# `theano` function"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"y = T.vector()\n",
"g = theano.function([y], y.dot(y))\n",
"print(g(x))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"g([1,2,3,4])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## derivatives"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dg = T.grad(y.dot(y), y)\n",
"dg_f = theano.function([y], dg)\n",
"dg_f([1,2,3,4])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"dg = theano.function([y], T.grad(y.dot(y), y))"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dg(1)"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"dg([1])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## imperative programming"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"x = numpy.array([1,2,3]).astype(numpy.float32)\n",
"x_shared = theano.shared(x)\n",
"x_symbolic = T.vector()\n",
"epsilon = T.scalar()"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"objective = x_symbolic.dot(x_symbolic)\n",
"gradient = T.grad(objective, x_symbolic)\n",
"g2 = theano.function([epsilon], objective,\n",
" givens=[(x_symbolic,x_shared)],\n",
" updates=[(x_shared, x_symbolic-epsilon*gradient)])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"print(x_shared.get_value())\n",
"g2(0.1)"
]
},
{
"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.4.4"
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment