提交 16683490 authored 作者: Pascal Lamblin's avatar Pascal Lamblin

Merge pull request #1611 from nouiz/release

Release preparation
...@@ -8,7 +8,9 @@ ...@@ -8,7 +8,9 @@
# # This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u # # This file is up-to-date if the command git log --format="%aN <%aE>" | sort -u
# # gives no duplicates. # # gives no duplicates.
Jan Schlüter <github@jan-schlueter.de> f0k <github@jan-schlueter.de>
Rami Al-Rfou' <rmyeid@gmail.com> Rami Al-Rfou <rmyeid@gmail.com> Rami Al-Rfou' <rmyeid@gmail.com> Rami Al-Rfou <rmyeid@gmail.com>
Arnaud Bergeron <abergeron@gmail.com> <abergeron@gmail.com>
<abergeron@gmail.com> <anakha@kami.(none)> <abergeron@gmail.com> <anakha@kami.(none)>
David Warde-Farley <wardefar@iro.umontreal.ca> David Warde-Farley <dwf@cs.toronto.edu> David Warde-Farley <wardefar@iro.umontreal.ca> David Warde-Farley <dwf@cs.toronto.edu>
David Warde-Farley <wardefar@iro.umontreal.ca> David Warde Farley <dwf@cs.toronto.edu> David Warde-Farley <wardefar@iro.umontreal.ca> David Warde Farley <dwf@cs.toronto.edu>
...@@ -25,6 +27,11 @@ Francois Savard <devnull@localhost> fsavard <devnull@localhost> ...@@ -25,6 +27,11 @@ Francois Savard <devnull@localhost> fsavard <devnull@localhost>
# 2 onze <onzeonline@gmail.com> # 2 onze <onzeonline@gmail.com>
# 25 projects@lgcm <projects@lgcm> # 25 projects@lgcm <projects@lgcm>
# 1 tutorial/debug_faq.txt <devnull@localhost> # 1 tutorial/debug_faq.txt <devnull@localhost>
Bogdan Budescu <bbudescu@gmail.com> bbudescu <bbudescu@gmail.com>
Sebastian Berg <sebastian@sipsolutions.net> seberg <sebastian@sipsolutions.net>
Huy Nguyen <huy@huyng.com> huyng <huy@huyng.com>
Wei Li <kuantkid@gmail.com> kuantkid <kuantkid@gmail.com>
Ethan Buchman <ebuchman@uoguelph.ca> ebuchman <ebuchman@uoguelph.ca>
Frederic Bastien <nouiz@nouiz.org> Frederic Bastien <bastienf@briaree1.rqchp.qc.ca> Frederic Bastien <nouiz@nouiz.org> Frederic Bastien <bastienf@briaree1.rqchp.qc.ca>
Frederic Bastien <nouiz@nouiz.org> Frederic Bastien <bastienf@iro.umontreal.ca> Frederic Bastien <nouiz@nouiz.org> Frederic Bastien <bastienf@iro.umontreal.ca>
Frederic Bastien <nouiz@nouiz.org> Frédéric Bastien <nouiz@nouiz.org> Frederic Bastien <nouiz@nouiz.org> Frédéric Bastien <nouiz@nouiz.org>
...@@ -55,6 +62,7 @@ James Bergstra <james.bergstra@gmail.com> james@mackie <james@mackie> ...@@ -55,6 +62,7 @@ James Bergstra <james.bergstra@gmail.com> james@mackie <james@mackie>
James Bergstra <james.bergstra@gmail.com> james@x40.unstable <james@x40.unstable> James Bergstra <james.bergstra@gmail.com> james@x40.unstable <james@x40.unstable>
James Bergstra <james.bergstra@gmail.com> test_rng_mrg.py <devnull@localhost> James Bergstra <james.bergstra@gmail.com> test_rng_mrg.py <devnull@localhost>
John Salvatier <jsalvatier@gmail.com> jsalvatier <jsalvatier@gmail.com> John Salvatier <jsalvatier@gmail.com> jsalvatier <jsalvatier@gmail.com>
John Salvatier <jsalvatier@gmail.com> john salvatier <jsalvatier@gmail.com>
Joseph Turian <turian@iro.umontreal.ca> Joseph Turian <turian@gmail.com> Joseph Turian <turian@iro.umontreal.ca> Joseph Turian <turian@gmail.com>
Joseph Turian <turian@iro.umontreal.ca> turian@grenat.iro.umontreal.ca <turian@grenat.iro.umontreal.ca> Joseph Turian <turian@iro.umontreal.ca> turian@grenat.iro.umontreal.ca <turian@grenat.iro.umontreal.ca>
Joseph Turian <turian@iro.umontreal.ca> turian@lgcm <turian@lgcm> Joseph Turian <turian@iro.umontreal.ca> turian@lgcm <turian@lgcm>
...@@ -83,3 +91,4 @@ Sander Dieleman <sanderdieleman@gmail.com> benanne <sanderdieleman@gmail.com> ...@@ -83,3 +91,4 @@ Sander Dieleman <sanderdieleman@gmail.com> benanne <sanderdieleman@gmail.com>
Xavier Glorot <glorotxa@iro.umontreal.ca> glorotxa <glorotxa@iro.umontreal.ca> Xavier Glorot <glorotxa@iro.umontreal.ca> glorotxa <glorotxa@iro.umontreal.ca>
Xavier Glorot <glorotxa@iro.umontreal.ca> glorotxa@timide.iro.umontreal.ca <glorotxa@timide.iro.umontreal.ca> Xavier Glorot <glorotxa@iro.umontreal.ca> glorotxa@timide.iro.umontreal.ca <glorotxa@timide.iro.umontreal.ca>
Yoshua Bengio <bengioy@iro.umontreal.ca> bengioy@bengio-mac.local <bengioy@bengio-mac.local> Yoshua Bengio <bengioy@iro.umontreal.ca> bengioy@bengio-mac.local <bengioy@bengio-mac.local>
Sina Honari <honaris@iro.umontreal.ca> SinaHonari <sina2222@gmail.com>
差异被折叠。
...@@ -1001,6 +1001,10 @@ instructions in :ref:`windows_bleeding_edge`. ...@@ -1001,6 +1001,10 @@ instructions in :ref:`windows_bleeding_edge`.
Windows installer for AnacondaCE Windows installer for AnacondaCE
################################ ################################
.. note::
This don't work with current Anaconda. Help needed to repair this.
If you installed AnacondaCE, the simplest way to install and configure If you installed AnacondaCE, the simplest way to install and configure
Theano is to download and execute this `Windows installer Theano is to download and execute this `Windows installer
for Theano on AnacondaCE for Windows for Theano on AnacondaCE for Windows
......
...@@ -201,7 +201,10 @@ def shared(value, name=None, strict=False, allow_downcast=None, **kwargs): ...@@ -201,7 +201,10 @@ def shared(value, name=None, strict=False, allow_downcast=None, **kwargs):
' using \'theano.shared(..., borrow=True)\'',) ' using \'theano.shared(..., borrow=True)\'',)
raise raise
raise TypeError('No suitable SharedVariable constructor could be found', raise TypeError('No suitable SharedVariable constructor could be found.'
' Are you sure all kwargs are supported?'
' We do not support the parameter dtype or type.'
' value="%s". parameters="%s"' %
(value, kwargs)) (value, kwargs))
shared.constructors = [] shared.constructors = []
......
...@@ -17,7 +17,7 @@ class T_OpFromGraph(unittest.TestCase): ...@@ -17,7 +17,7 @@ class T_OpFromGraph(unittest.TestCase):
x, y, z = T.matrices('xyz') x, y, z = T.matrices('xyz')
e = x + y * z e = x + y * z
op = OpFromGraph([x, y, z], [e], mode='FAST_RUN') op = OpFromGraph([x, y, z], [e], mode='FAST_RUN')
f = op(x, y, z) - op(y, z, x) #(1+3*5=array of 16) - (3+1*5=array of 8) f = op(x, y, z) - op(y, z, x) # (1+3*5=array of 16) - (3+1*5=array of 8)
fn = function([x, y, z], f) fn = function([x, y, z], f)
xv = numpy.ones((2, 2), dtype=config.floatX) xv = numpy.ones((2, 2), dtype=config.floatX)
yv = numpy.ones((2, 2), dtype=config.floatX)*3 yv = numpy.ones((2, 2), dtype=config.floatX)*3
...@@ -47,7 +47,7 @@ class T_OpFromGraph(unittest.TestCase): ...@@ -47,7 +47,7 @@ class T_OpFromGraph(unittest.TestCase):
def test_grad(self): def test_grad(self):
x, y, z = T.matrices('xyz') x, y, z = T.matrices('xyz')
e = x + y * z e = x + y * z
op = OpFromGraph([x, y, z], [e], mode='FAST_RUN', grad_depth = 2) op = OpFromGraph([x, y, z], [e], mode='FAST_RUN', grad_depth=2)
f = op(x, y, z) f = op(x, y, z)
f = f - T.grad(T.sum(f), y) f = f - T.grad(T.sum(f), y)
fn = function([x, y, z], f) fn = function([x, y, z], f)
......
...@@ -128,10 +128,15 @@ import logging ...@@ -128,10 +128,15 @@ import logging
import os import os
import sys import sys
import time import time
import warnings
import numpy import numpy
import numpy.distutils import numpy.distutils
import numpy.distutils.system_info import numpy.distutils.system_info
try:
import numpy.distutils.__config__
except ImportError:
pass
from theano.configparser import config, AddConfigVar, StrParam from theano.configparser import config, AddConfigVar, StrParam
from theano.gof import (utils, Op, view_roots, DestroyHandler, from theano.gof import (utils, Op, view_roots, DestroyHandler,
...@@ -156,8 +161,26 @@ _logger = logging.getLogger('theano.tensor.blas') ...@@ -156,8 +161,26 @@ _logger = logging.getLogger('theano.tensor.blas')
# Otherwise, we give an optimization warning for no reason in some cases. # Otherwise, we give an optimization warning for no reason in some cases.
def default_blas_ldflags(): def default_blas_ldflags():
try: try:
if hasattr(numpy.distutils, '__config__'):
#If the old private interface is available use it as it
#don't print information to the user.
blas_info = numpy.distutils.__config__.blas_opt_info
else:
#We need to catch warnings as in some cases NumPy print
#stuff that we don't want the user to see like this:
"""
SOMEPATH/Canopy_64bit/User/lib/python2.7/site-packages/numpy/distutils/system_info.py:564: UserWarning: Specified path /home/vagrant/src/master-env/lib is invalid.
warnings.warn('Specified path %s is invalid.' % d)
"""
#I'm not able to remove all printed stuff
with_context = warnings.catch_warnings(record=True)
with_context.__enter__()
try:
blas_info = numpy.distutils.system_info.get_info("blas_opt")
finally:
with_context.__exit__(None, None, None)
# If we are in a EPD installation, mkl is available # If we are in a EPD installation, mkl is available
blas_info = numpy.distutils.system_info.get_info("blas_opt")
if "EPD" in sys.version: if "EPD" in sys.version:
use_unix_epd = True use_unix_epd = True
if sys.platform == 'win32': if sys.platform == 'win32':
......
...@@ -1075,10 +1075,12 @@ class ShapeFeature(object): ...@@ -1075,10 +1075,12 @@ class ShapeFeature(object):
# an element of o_shapes is either None or a tuple # an element of o_shapes is either None or a tuple
# elements of the tuple can be either strings, or ints # elements of the tuple can be either strings, or ints
if len(o_shapes) != len(node.outputs): if len(o_shapes) != len(node.outputs):
raise Exception('len(o_shapes) = ' raise Exception(
+ str(len(o_shapes)) 'The infer_shape method for the Op "%s" returned a list ' +
+ ' != len(node.outputs) = ' 'with the wrong number of element: len(o_shapes) = %d ' +
+ str(len(node.outputs))) ' != len(node.outputs) = %d' % (str(node.op),
len(o_shapes),
len(node.outputs)))
# Ensure shapes are in 'int64'. This is to make sure the assert # Ensure shapes are in 'int64'. This is to make sure the assert
# found in the `local_useless_subtensor` optimization does not fail. # found in the `local_useless_subtensor` optimization does not fail.
......
...@@ -188,7 +188,11 @@ def safe_make_node(op, *inputs): ...@@ -188,7 +188,11 @@ def safe_make_node(op, *inputs):
def makeTester(name, op, expected, checks=None, good=None, bad_build=None, def makeTester(name, op, expected, checks=None, good=None, bad_build=None,
bad_runtime=None, grad=None, mode=None, grad_rtol=None, bad_runtime=None, grad=None, mode=None, grad_rtol=None,
eps=1e-10, skip=False, test_memmap=True): eps=1e-10, skip=False, test_memmap=True, check_name=True):
"""
:param check_name:
Use only for tester that aren't in Theano.
"""
if checks is None: if checks is None:
checks = {} checks = {}
if good is None: if good is None:
...@@ -206,12 +210,14 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None, ...@@ -206,12 +210,14 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None,
_bad_build, _bad_runtime, _grad = bad_build, bad_runtime, grad _bad_build, _bad_runtime, _grad = bad_build, bad_runtime, grad
_mode, _grad_rtol, _eps, skip_ = mode, grad_rtol, eps, skip _mode, _grad_rtol, _eps, skip_ = mode, grad_rtol, eps, skip
_test_memmap = test_memmap _test_memmap = test_memmap
_check_name = check_name
class Checker(unittest.TestCase): class Checker(unittest.TestCase):
op = staticmethod(_op) op = staticmethod(_op)
expected = staticmethod(_expected) expected = staticmethod(_expected)
checks = _checks checks = _checks
check_name = _check_name
good = _good good = _good
bad_build = _bad_build bad_build = _bad_build
bad_runtime = _bad_runtime bad_runtime = _bad_runtime
...@@ -223,7 +229,8 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None, ...@@ -223,7 +229,8 @@ def makeTester(name, op, expected, checks=None, good=None, bad_build=None,
def setUp(self): def setUp(self):
# Verify that the test's name is correctly set. # Verify that the test's name is correctly set.
# Some tests reuse it outside this module. # Some tests reuse it outside this module.
eval(self.__class__.__module__ + '.' + self.__class__.__name__) if self.check_name:
eval(self.__class__.__module__ + '.' + self.__class__.__name__)
# We keep a list of temporary files created in add_memmap_values, # We keep a list of temporary files created in add_memmap_values,
# to remove them at the end of the test. # to remove them at the end of the test.
......
Markdown 格式
0%
您添加了 0 到此讨论。请谨慎行事。
请先完成此评论的编辑!
注册 或者 后发表评论