Scikit-learn: t-SNE falla con la matriz no debe contener infs o NaNs (específico de OSX)

Creado en 15 abr. 2016  ·  108Comentarios  ·  Fuente: scikit-learn/scikit-learn

Darwin-15.0.0-x86_64-i386-64bit
('Python', '2.7.11 |Anaconda custom (x86_64)| (default, Dec  6 2015, 18:57:58) \n[GCC 4.2.1 (Apple Inc. build 5577)]')
('NumPy', '1.11.0')
('SciPy', '0.17.0')
('Scikit-Learn', '0.17.1')

Al intentar ejecutar un t-SNE

proj = TSNE().fit_transform(X)
ValueError: array must not contain infs or NaNs

sin embargo

np.isfinite(X).all() # True 
np.isnan(X).all() # False
np.isinf(X).all() # False

Seguimiento de pila completa:


ValueError                                Traceback (most recent call last)
<ipython-input-16-c25f35fd042c> in <module>()
----> 1 plot(X, y)

<ipython-input-1-72bdb7124d13> in plot(X, y)
     74 
     75 def plot(X, y):
---> 76     proj = TSNE().fit_transform(X)
     77     scatter(proj, y)

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in fit_transform(self, X, y)
    864             Embedding of the training data in low-dimensional space.
    865         """
--> 866         embedding = self._fit(X)
    867         self.embedding_ = embedding
    868         return self.embedding_

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _fit(self, X, skip_num_points)
    775                           X_embedded=X_embedded,
    776                           neighbors=neighbors_nn,
--> 777                           skip_num_points=skip_num_points)
    778 
    779     def _tsne(self, P, degrees_of_freedom, n_samples, random_state,

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _tsne(self, P, degrees_of_freedom, n_samples, random_state, X_embedded, neighbors, skip_num_points)
    830         opt_args['momentum'] = 0.8
    831         opt_args['it'] = it + 1
--> 832         params, error, it = _gradient_descent(obj_func, params, **opt_args)
    833         if self.verbose:
    834             print("[t-SNE] Error after %d iterations with early "

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/sklearn/manifold/t_sne.pyc in _gradient_descent(objective, p0, it, n_iter, objective_error, n_iter_check, n_iter_without_progress, momentum, learning_rate, min_gain, min_grad_norm, min_error_diff, verbose, args, kwargs)
    385     for i in range(it, n_iter):
    386         new_error, grad = objective(p, *args, **kwargs)
--> 387         grad_norm = linalg.norm(grad)
    388 
    389         inc = update * grad >= 0.0

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/scipy/linalg/misc.pyc in norm(a, ord, axis, keepdims)
    127     """
    128     # Differs from numpy only in non-finite handling and the use of blas.
--> 129     a = np.asarray_chkfinite(a)
    130 
    131     # Only use optimized norms if axis and keepdims are not specified.

/Users/joelkuiper/anaconda/lib/python2.7/site-packages/numpy/lib/function_base.pyc in asarray_chkfinite(a, dtype, order)
   1020     if a.dtype.char in typecodes['AllFloat'] and not np.isfinite(a).all():
   1021         raise ValueError(
-> 1022             "array must not contain infs or NaNs")
   1023     return a
   1024 

ValueError: array must not contain infs or NaNs
Bug

Comentario más útil

Para cualquier persona afectada por esto, esto debería solucionarlo:

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

Avísame si eso no te funciona.

Todos 108 comentarios

Lo mismo con ('Scikit-Learn', '0.18.dev0')

¿Te importaría compartir tus datos X conmigo?

Seguro, ¿dónde y en qué formato te gustaría?

El 17 de abril de 2016, a las 09:11, 康 洋[email protected] escribió:

¿Te importaría compartir tus datos X conmigo?

-
Recibes esto porque eres el autor del hilo.
Responda a este correo electrónico directamente o véalo en GitHub https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -210968577

Mi correo electrónico es [email protected]
Como sé, hay una función numpy.save para guardar una matriz en un archivo binario en formato .npy ~~

Pruebo sus datos en ubuntu 14.04 LTS con
Python == 2.7.6
scikit-learn == 0.17.1
numpy == 1.8.2
scipy == 0.13.3
Está bien y no genera ValueError. El código de prueba es:
`importar numpy
a = numpy.load ('/ root / test.npy')
imprimir una forma
print numpy.isnan (a) .all () #False
print numpy.isfinite (a) .all () #Verdadero
print numpy.isinf (a) .all () #False

de sklearn.manifold import TSNE
proj = TSNE (). fit_transform (a) # [[2.35503527e + 00 1.15976751e + 01] .... [3.29832591e + 00 8.98212513e + 00]]
proyecto de impresión


Luego actualizo numpy, scipy a 1.11.0, 0.17.0 y pruebo con el mismo código y tampoco genera ningún error.

Reproducido para 3.5 con anaconda bajo OS X El Capitan.

Darwin 15.4.0
Python 3.5.1 :: Anaconda custom (x86_64)
numpy 1.10.4
scipy 0.17.0
scikit-learn 0.17.1

Ejecución de ejemplo:

import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Gracias @ ivan-krukov, pero no puedo replicar en Python 3.3. Intentaré 3.5

Esto no se aplica a linux (4.4.0-21, Ubuntu 16.04) con los mismos paquetes en 3.5.

Estoy en El-Capitan, pero no consigo poner en marcha una instalación de Python 3.5.

¿Hay alguna actualización sobre esto?

Tengo el problema en un conjunto de datos mío, en Anaconda, Py 3.5, sklearn 0.17.1, OSX El Capitan.
Puedo reproducir el error con el ejemplo proporcionado por @ ivan-krukov.

Mismo problema. Python 2.7.6 en OS X El Capitan en 0.17. Probé el mismo código en Linux usando Python 2.7.6 y 0.17, y funciona.

Mismo problema.
OSX El Capitan Python 3.5.1
scikit-learn == 0.17.1
scipy == 0.17.1

Tengo el mismo problema y realmente agradecería una solución (¿o una solución alternativa?)
Versión del sistema: OS X 10.11.5
Python 3.5.1 :: Anaconda 4.0.0 (x86_64)
numpy.version.version 1.11.0
scipy.version 0.17.1
sklearn. versión 0.17.1

También puedo reproducir el error con la muestra de código de ivan-krukov

El mismo problema en OS X EI Capitan con Python 3.5

Versión del sistema: OS X 10.11.5
Python 3.5.1 :: Continuum Analytics, Inc.
numpy. versión 1.11.1
scipy. versión 0.16.0
sklearn. versión 0.17.1

El mismo problema. Aunque he notado que solo ocurre para un subconjunto de mi conjunto de datos y no para todo . Es decir, si hago TSNE en todo el conjunto de datos, funciona , si lo hago en un conjunto reducido, no.

O_o ;; Esto solo, si repito el mismo subconjunto 'roto' que no funciona (por medio de la lista * 10), entonces funciona. Multiplicar cada vector individual por 10 no funciona, pero duplicar la fecha sí. simplemente duplicar la longitud de la lista es insuficiente. ¿Quizás esto es una especie de control de grados de libertad que se ha vuelto loco?

@ ivan-krukov Hoy mordí la bala e instalé una máquina virtual El Capitan. Lamentablemente no puedo reproducir tu problema.

@Concomitante, ¿ puede reproducir el error en el ejemplo independiente que se proporciona en https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -218365487?

Estoy en El-Capitan, pero no consigo poner en marcha una instalación de Python 3.5.

@jnothman , no parece estar sucediendo solo en Python 3.5, así que si pudiera intentar reproducir con Python 2.7 (fragmento: https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment-218365487 ) eso seria genial.

@lesteve Puedo reproducir el problema.

import numpy as np
import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 866, in fit_transform
    embedding = self._fit(X)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 777, in _fit
    skip_num_points=skip_num_points)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 832, in _tsne
    params, error, it = _gradient_descent(obj_func, params, **opt_args)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/sklearn/manifold/t_sne.py", line 387, in _gradient_descent
    grad_norm = linalg.norm(grad)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/scipy/linalg/misc.py", line 115, in norm
    a = np.asarray_chkfinite(a)
  File "/Users/dshank/miniconda3/envs/python3/lib/python3.5/site-packages/numpy/lib/function_base.py", line 1033, in asarray_chkfinite
    "array must not contain infs or NaNs")
ValueError: array must not contain infs or NaNs

Sin embargo, siguiendo el mismo código:

>>> a = np.random.uniform(size=(10000,20))
>>> TSNE(n_components=2).fit_transform(a)
array([[  3.25766047e+11,  -2.74708004e+11],
       [  2.43498802e+11,  -7.68189047e+10],
       [ -6.00107639e+09,  -1.13548763e+11],
       ..., 
       [  3.02794039e+10,   6.64402020e+11],
       [  2.55855781e+10,   5.67932400e+10],
       [  1.42040378e+11,  -7.55188994e+10]])

Extraño.

Tampoco puedo reproducir con python 3.5.1, numpy 1.11.1, scipy 0.17.1 y scikit-learn 0.17.1 de miniconda (con MKL) en una caja virtual con OSX El Capitan. Probaré un hardware mac real más tarde.

También @joelkuiper y @Concomitant , ¿pueden verificar que pueden reproducir el problema en el estado actual de la rama maestra de scikit-learn?

@lesteve y otros No puedo reproducir el error con el fragmento publicado anteriormente en el último maestro con python 2.7.

Información del sistema:

Darwin-15.0.0-x86_64-i386-64bit
('Python', '2.7.10 (v2.7.10:15c95b7d81dc, May 23 2015, 09:33:12) \n[GCC 4.2.1 (Apple Inc. build 5666) (dot 3)]')
('NumPy', '1.11.0')
('SciPy', '0.17.0')
('Scikit-Learn', '0.18.dev0')

Intenté de nuevo en un mac real con OSX El Capitan 10.11.3 (con los últimos numpy scipy y scikit-learn de anaconda, la misma configuración que informó @Concomitant en https://github.com/scikit-learn/scikit-learn/issues / 6665 # issuecomment-229703129) pero tampoco pudo reproducir el problema (intenté ejecutar el fragmento varias veces).

Lo que es extraño es que a pesar de la línea np.random.seed(1) obtengo resultados diferentes para la salida de fit_transform . Esto podría ser un error en sí mismo.

Lo que es extraño es que, a pesar de la línea np.random.seed (1), obtengo resultados diferentes para la salida de fit_transform. Esto podría ser un error en sí mismo.

En realidad, leí el fragmento de código de @Concomitant demasiado rápido: en lugar de random.seed(1) debería ser np.random.seed(1) contrario, la cantidad de RNG no se resembrará adecuadamente y no se pueden obtener resultados deterministas.

También me di cuenta de que leí toda la discusión demasiado rápido y que el error solo ocurre con Python 2.7. Intentaremos de nuevo.

Tampoco puedo reproducir con python 2.7.12 de conda en OSX 10.11.3.

En realidad, @Ekliptor puede reproducir el problema con python 3.5.1 desde conda, por lo que probablemente tampoco esté relacionado con la versión de Python. Tal vez dependa de la versión menor de OSX. Se actualizará y volverá a intentarlo.

No puedo replicar ninguno de los dos con OSX 10.11.5. Probé con Python 2.7.12 y 3.5.2 instalados con conda junto con numpy 1.11.1, scipy 0.17.1 y scikit-learn 0.17.1.

No se que hacer. Si alguno de ustedes puede reproducir el problema, intente encontrar una semilla aleatoria numerosa que desencadene el problema (usando np.random.seed(my_seed) lugar de random.seed(1) en el fragmento anterior) y comunique el valor aquí (junto con la versión de OSX y sus paquetes de Python).

Puedo confirmar que el problema se solucionó con la última versión. Ya no puedo reproducirlo como antes.
Solo actualicé numpy:
numpy.version.version 1.11.1

A todas las personas que trabajan con Tensorflow les puedo agregar:
Cuando trato de trazar una muestra muy pequeña (<200 puntos), a veces todavía me encuentro con este error. Después de aumentar el tamaño de la muestra, paso a tsne.fit_transform (), siempre funciona.

Gracias @Ekliptor por comprobar que funciona con scikit-learn master. @joelkuiper y @Concomitant ¿confirmas que scikit-learn master también funciona para ti? Si es así podemos cerrar este problema.

Instalé master, el fragmento de código se ejecuta limpiamente ahora.

parece funcionar para todos ahora. clausura.

Lo siento, pero sigo recibiendo esto en Python 3.5.1, scikit 0.17, scikit-learn 0.18 (comete 9e913c04d748) y Numpy 1.11.1 en Mac OS 10.11.5.

@lesteve lo hice con ese fragmento exacto, sí. Sin embargo, ya no lo obtengo después de borrar mi instalación de Anaconda y reinstalarla desde cero con Python 3.5.2.

Tengo el mismo problema con Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 en Mac OS X El Capitan 10.11.3. Funciona cuando tengo más de 2100 puntos pero falla para valores más bajos.

Tengo el mismo problema con Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 en Mac OS X El Capitan 10.11.3. Funciona cuando tengo más de 2100 puntos pero falla para valores más bajos.

Falla analógicamente

Reabrir, por favor

Tengo el mismo problema en OS X 10.11.6, python 3.5.1, sklearn 0.17.1 y numpy 1.11.1.
En este conjunto de datos: https://dl.dropboxusercontent.com/u/103591/vals.out (con np.savetxt)

Falla analógicamente para valores de puntos bajos

@Lucidyan No entiendo a qué te refieres con eso.

Tengo el mismo problema en OS X 10.11.6, python 3.5.1, sklearn 0.17.1 y numpy 1.11.1.
En este conjunto de datos: https://dl.dropboxusercontent.com/u/103591/vals.out (con np.savetxt)

@pbnsilva, ¿puedes probar este fragmento publicado a continuación? Es posible que deba ejecutarlo varias veces porque, desafortunadamente, la semilla no está configurada correctamente (debe usar np.random.seed lugar de random.seed ).

import random
from sklearn.manifold import TSNE
random.seed(1)
a = np.random.uniform(size=(100,20))
TSNE(n_components=2).fit_transform(a)

Puntos de bonificación si puede encontrar un argumento semilla para np.random.seed y un argumento random_state para TSNE que haga que el fragmento sea determinista.

Alternativamente, algunas personas informaron que este error se corrigió en master. ¿Podrías intentar construir scikit-learn master para ver si el problema desaparece?

@lesteve Quise decir que obtengo el mismo error con una pequeña cantidad de instancias, con los mismos parámetros del sistema (Python 3.5.2, scikit-learn 0.17.1, scipy 0.17.1, numpy 1.11.1 en Mac OS X El Capitan 10.11.3)

@pbnsilva, ¿puedes probar este fragmento publicado a continuación? Es posible que deba ejecutarlo varias veces porque, lamentablemente, la semilla no está configurada correctamente (debe usar np.random.seed en lugar de random.seed).

Lo probé y falla con X_SIZE <= 1750 (Y_SIZE = 20, n_components = 2 se convirtieron en constantes). si empiezo a cambiar las constantes (aumento) con X_SIZE = 1750 fijo, también falla.

@Lucidyan, ¿ podrías probar el mismo fragmento con scikit-learn master y ver si también falla?

sí, no funciona para mí (numpy 1.11.1, El capitan.10.11, sklearn 0.17.1, python 3.5.2) molestamente, ha roto el código antiguo que sí funcionó. ¿Qué cambiaron ustedes ...?

@ act65 estamos más que ansiosos por llegar al fondo de esto, pero no hemos podido reproducirlo y parece que hasta ahora estamos recibiendo informes mixtos de los usuarios.

Entonces, si aún no lo ha hecho (desafortunadamente no somos lectores mentales y "no funciona para mí" no nos dice lo que intentó), ¿podría intentar ejecutar el fragmento mencionado anteriormente en https://github.com/scikit-learn / scikit-learn / issues / 6665 # issuecomment -243782185. Intente ejecutarlo varias veces por si acaso la semilla aleatoria no está configurada correctamente y puede haber algo de aleatoriedad en el fragmento.

Entonces, ¿qué sería realmente genial si pudieras probar con el candidato de versión 0.18 que es fácil de instalar (muy recomendable hacerlo en un entorno virtualenv o conda separado):

pip install --pre scikit-learn -U

Editado: 0.18 ha sido lanzado para que pueda usar (no es necesario usar --pre ):

pip install scikit-learn -U

y vuelva a ejecutar el fragmento para ver si está corregido en 0.18 como algunos usuarios ya han informado en este hilo.

0.18 se lanzará en unas pocas semanas, si no días, así que ya sabes lo que tienes que hacer si quieres ayudarnos a llegar al fondo de esto antes del lanzamiento ;-).

sí mi mal, debería haber sido más claro. (Había intentado más o menos lo mismo que otros, solo en MNIST).

de todos modos, ¡funciona! Gracias :)
pip install --pre scikit-learn -U arregló

De acuerdo, gracias por informarnos y es genial saber que esto se ha solucionado en la versión 0.18 candidata Esto parece coincidir con lo que otros han informado cuando dicen que se corrigió en el maestro.

Sin embargo, solo para completar, se recomienda ceñirse a las versiones publicadas para el código de producción, por lo que es posible que deba esperar un poco más hasta que salga la versión 0.18.

@lesteve
Probé el fragmento en la versión 0.18rc2, instalada por

pip install --pre scikit-learn -U

¡Y parece funcionar! ¡Salud!

Gracias @Lucidyan por intentarlo.

Lo siento, sigo recibiendo este error con el fragmento de código anterior después de actualizar a scikit-learn 0.18 ( pip install --pre scikit-learn -U ) en conda env.

Aquí está la información de mi sistema:
OS X El Capitan Versión 10.11.4
Python 2.7.12
sklearn 0.18 (también obtuvo el mismo error en sklearn 0.17.1)
numpy 1.11.1 (también obtuvo el mismo error en numpy 1.11.2)
scipy 0.18.1

Sin embargo, ejecuté el mismo fragmento de código en el sistema Linux, no obtuve ningún error.
La información del sistema del sistema Linux es:
Ubuntu 14.04.5 LTS (GNU / Linux 3.13.0-91-genérico x86_64)
Python 2.7.6
sklearn 0.18
numpy 1.11.2
scipy 0.13.3

Intente desinstalar y reinstalar numpy, scipy y scikit-learn. Si eso aún falla, intente en un entorno virtualenv diferente (o conda si está usando conda) para asegurarse de que algo no esté mal en su entorno Python.

Sigue obteniendo el mismo error ( ValueError: array must not contain infs or NaNs ) en sklearn 0.18 ( 0.18-np111py35_0 ) a través de conda. ¡Sin embargo, las ruedas pip parecen funcionar bien!

Sigue obteniendo el mismo error (ValueError: la matriz no debe contener infs o NaNs) en sklearn 0.18 (0.18-np111py35_0) a través de conda. ¡Sin embargo, las ruedas pip parecen funcionar bien!

Hmmm interesante ... ¿podrías intentar usar paquetes conda sin mkl, es decir, algo como conda create -n sklearn_nomkl python scikit-learn nomkl para que podamos ver si eso es MKL vs openblas?

También puntos de bonificación si puede proporcionar un fragmento que reproduzca el problema con una semilla aleatoria fija (es decir, usando np.random.RandomState(some_int) ) que se pueda usar como fragmento de referencia en el futuro. Hasta ahora, el fragmento que tenemos no es determinista (se usa random.seed y no tiene influencia de numpy.random seed).

Claro, no hay problema. Esto puede ser un problema de BLAS de hecho, el conda create -n sklearn_nomkl python scikit-learn nomkl env funciona bien.

Con respecto al fragmento ... esto se pone interesante. P.ej,

from sklearn.manifold import TSNE
from sklearn.model_selection import train_test_split
from sklearn.datasets import load_digits

digits = load_digits()

X_train, X_test, y_train, y_test = train_test_split(digits.data, 
                                                    digits.target, 
                                                    random_state=1)

tsne = TSNE(random_state=1)
digits_tsne_train = tsne.fit_transform(X_train)

reproduce el problema en mi máquina. Sin embargo, cuando reemplazo digits_tsne_train = tsne.fit_transform(X_train) por digits_tsne_train = tsne.fit_transform(digits.data) parece estar bien. Sería bueno encontrar un ejemplo más ligero, tal vez, para agregar este caso particular a las pruebas de travis.

EDITAR: Lo mismo ocurre con el iris. iris.data funciona en fit_transform, un conjunto de datos dividido ( X_train ) no. Tal vez haya algo gracioso en train_test_split . Sin embargo, tanto X_train como iris.data parecen ser arreglos flotantes de 64 ...

¿Qué pasa con el fragmento de https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -243782185, no encontró una manera de hacerlo determinista y aún fallar en su máquina?

El fragmento

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

reproduce el error (pero funciona bien en nomkl env)

Bien, muchas gracias por esto, al menos ahora tenemos un fragmento determinista. Para el registro, ¿puede publicar el resultado de este fragmento?

import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)

Además, solo por el bien de la cordura, ¿puede asegurarse de que puede reproducir el problema en un entorno de conda nuevo?

Para ser honesto, no estoy seguro de a dónde vamos desde esto. No lo he intentado desde entonces, pero no pude reproducir en una caja virtual de El Capital, @ogrisel tampoco pudo reproducir en una computadora portátil OSX, por lo que en ese momento dijo que podría haber algún problema específico de hardware involucrado.

Por supuesto,

la máquina que causa este problema:

Darwin-16.1.0-x86_64-i386-64bit
Python 3.5.2 |Continuum Analytics, Inc.| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]
NumPy 1.11.2
SciPy 0.18.1
Scikit-Learn 0.18

(probado en un ambiente fresco conda)

puede haber algún problema específico de hardware involucrado.

¡Creo que puedes estar en algo! Lo probé en mi otra Mac y funciona bien allí. La única diferencia es que la salida anterior se ejecuta en un kernel más antiguo ( Darwin-15.6.0-x86_64-i386-64bit ). Todavía no he actualizado la segunda mac a macOS Sierra, que se ejecuta en la máquina anterior que tiene este problema. Podría estar relacionado con el sistema operativo. Actualizaré la segunda máquina a Sierra en el próximo mes más o menos (estoy en medio de un proyecto y no quiero romper cosas), pero puedo informarle si la actualización de Sierra lleva a este problema en el segunda máquina (o tal vez alguien más con macOS Sierra podría probarlo para que ahora si es una cosa del sistema operativo)

Dado que el problema se ha informado en diferentes versiones de OSX, dudo que esto sea solo un problema de la versión de OSX. El presentimiento de IIRC @ogrisel era que estaba relacionado con la arquitectura de la CPU.

Otra forma (más intensiva en tiempo) de depurar este problema sería rastrear dónde aparecen los NaN en el código.

El presentimiento de IIRC @ogrisel era que estaba relacionado con la arquitectura de la CPU.

Hm, ¿en qué se diferenciaría la versión conda scikit-learn de las ruedas pip? Porque estos últimos parecen funcionar en la misma máquina. Tal vez esté relacionado de alguna manera con conda

Otra forma (más intensiva en tiempo) de depurar este problema sería rastrear dónde aparecen los NaN en el código.

Noté que el gradiente en https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L387 explota, hasta que se convierte en -inf en una posición después la 25a iteración en el https://github.com/scikit-learn/scikit-learn/blob/master/sklearn/manifold/t_sne.py#L386 for-loop

...
   0.00000000e+00   0.00000000e+00   0.00000000e+00   0.00000000e+00
   0.00000000e+00   0.00000000e+00   6.06587795e+32  -1.10699515e+33
  -1.55245133e+34              inf  -1.52569936e+33  -3.43926080e+33
  -1.92332051e+32  -2.73996151e+32  -2.57570880e+33  -3.64962271e+33
...

En la otra máquina (la que funciona bien), los gradientes son todos <0 después de la misma iteración. Entonces, de alguna manera, la función _gradient_descent no funciona correctamente (tal vez debido a algo de BLAS).

Hm, ¿en qué se diferenciaría la versión conda scikit-learn de las ruedas pip? Porque estos últimos parecen funcionar en la misma máquina. Tal vez esté relacionado de alguna manera con conda

Las ruedas de pip están usando OpenBLAS y usted no tiene el problema al usar OpenBLAS con conda (a través del truco nomkl ) por lo que parece un problema MKL, que además de eso es probablemente específico de la CPU.

¡Gran trabajo depurando el problema por cierto! Puntos de bonificación si logra aislar aún más el problema (por ejemplo, seleccionando los datos antes de que aparezca la iteración inf ). Es muy probable que el problema surja en algún código cython en sklearn / manifold / _barnes_hut_tsne.pyx.

¿No debería reabrirse este tema dados los últimos hallazgos? Lo golpeé también y también logré superarlo con el truco nomkl, pero se siente como un error activo frente a uno cerrado, ¿no?

Otros que han estado golpeando esto: https://discussions.udacity.com/t/assignment-5-error-in-the-main-code-valueerror-array-must-not-contain-infs-or-nans/178187 / 7

Tienes razón, reabriendo. Este es serio, parece específico de hardware y ninguno de los desarrolladores principales pudo reproducirlo. La única forma de solucionarlo es si las personas que tienen el problema invierten algo de tiempo en depurarlo más.

¡Gran trabajo depurando el problema por cierto! Puntos de bonificación si logra aislar aún más el problema (por ejemplo, seleccionando los datos antes de que aparezca la iteración inf). Es muy probable que el problema surja en algún código cython en sklearn / manifold / _barnes_hut_tsne.pyx.

Me complace seguir investigando en diciembre después de todas las fechas límite de noviembre ... Sin embargo, incluso esto puede aislarse aún más, tengo curiosidad por saber si hay una solución para un problema tan específico de hardware. Tal vez, hasta que esto se resuelva por completo, puede valer la pena generar una excepción / advertencia más específica si el gradiente contiene infs con una nota sobre este problema.

Acabo de crear una nueva conda virtualenv y construí una versión devp de sklearn a partir del código fuente recién bifurcado de la rama maestra de sciki-learn, el error desapareció. ¿El devp sklearn está construido a partir del código fuente usando OpenBLAS en lugar de MKL?

Me complace seguir investigando en diciembre después de todas las fechas límite de noviembre ...

Suena genial, muchas gracias!

Sin embargo, incluso esto puede aislarse aún más, tengo curiosidad por saber si hay una solución para un problema tan específico de hardware.

No estoy seguro de una solución, una esperanza sería si podemos cambiar nuestro código cython para solucionar el problema una vez que lo hayamos aislado. También podría ser un problema de openblas y sería genial informarlo en sentido ascendente, especialmente porque las ruedas usan openblas.

Tal vez, hasta que esto se resuelva por completo, puede valer la pena generar una excepción / advertencia más específica si el gradiente contiene infs con una nota sobre este problema.

Agregar algunos consejos al mensaje de error (solo en OS X), suena como una buena idea, pero no estoy seguro de lo que debería decir, tal vez "considere usar conda e instalar scikit-learn con MKL" o algo como esto.

¿El devp sklearn está construido a partir del código fuente usando OpenBLAS en lugar de MKL?

@zhongyuk depende de la biblioteca que haya instalado. Una forma de saberlo una vez que haya creado scikit-learn desde la fuente es ejecutar el equivalente de ldd (Google parece decir otool -L ) en sklearn/cluster/_k_means.so (el nombre será diferente si está utilizando Python 3, es decir, algo como sklearn/cluster/_k_means.cpython-35m-x86_64-linux-gnu.so ). En mi máquina Ubuntu, por ejemplo, obtengo esto:

sklearn/cluster/_k_means.so:
        linux-vdso.so.1 =>  (0x00007ffc2312a000)
        libmkl_intel_lp64.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_intel_lp64.so (0x00007fadc2865000)
        libmkl_intel_thread.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_intel_thread.so (0x00007fadc0ee4000)
        libmkl_core.so => /home/lesteve/miniconda3/envs/py27/lib/libmkl_core.so (0x00007fadbf483000)
        libiomp5.so => /home/lesteve/miniconda3/envs/py27/lib/libiomp5.so (0x00007fadbf139000)
        libpthread.so.0 => /lib/x86_64-linux-gnu/libpthread.so.0 (0x00007fadbeeeb000)
        libm.so.6 => /lib/x86_64-linux-gnu/libm.so.6 (0x00007fadbebe1000)
        libpython2.7.so.1.0 => /home/lesteve/miniconda3/envs/py27/lib/libpython2.7.so.1.0 (0x00007fadbe7fa000)
        libc.so.6 => /lib/x86_64-linux-gnu/libc.so.6 (0x00007fadbe431000)
        libdl.so.2 => /lib/x86_64-linux-gnu/libdl.so.2 (0x00007fadbe22c000)
        libgcc_s.so.1 => /lib/x86_64-linux-gnu/libgcc_s.so.1 (0x00007fadbe016000)
        /lib64/ld-linux-x86-64.so.2 (0x0000563bdeda1000)
        libutil.so.1 => /lib/x86_64-linux-gnu/libutil.so.1 (0x00007fadbde12000)

Entonces puede ver en la tercera línea, que está usando MKL.

pero no estoy seguro de lo que debería decir, tal vez "considere usar conda e instalar scikit-learn con MKL" o algo como esto.

Solo quería escribir que creo que lo volteaste: las ruedas funcionaron y el problema solo ocurrió cuando lo estaba usando a través de conda con MKL ... Ahora, creo que tengo buenas noticias de alguna manera: solo quería Vuelva a ejecutar el ejemplo anterior que causó anteriormente este problema para confirmar

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

y ya no tengo este problema. Recuerdo que volví a instalar miniconda la otra semana por algunos otros problemas. ¿Crees que podría estar relacionado con algún tema de la antigua conda? Sería genial si otras personas que tuvieran este problema también pudieran intentar actualizar / reinstalar conda y verificar si eso les resuelve el problema. Mientras tanto, intentaré ver si puedo encontrar un estado de copia de seguridad antiguo para averiguar qué versión de conda había instalado anteriormente. (ahora mismo, tengo conda 4.2.12)

Solo quiero decir que ejecuté otool -L en sklearn/manifold/_barnes_hut_tsne.so (¿supongo que este es el archivo compilado t_sne.py?), Parece que de hecho está usando BLAS. Y el que arrojó error parece usar MKL ..

La versión de conda que tengo es 4.2.13, tanto el env que arroja el error como el env con sklearn generado en origen (que no arroja error) están dentro de conda.

Hm, interesante, entonces no es un problema de conda después de todo ... Curioso por qué funciona para mí ahora: /
(todo lo que puedo pensar que ha cambiado (excepto por reinstalar conda) fue reiniciar: P)

Solo quería escribir que creo que lo volteaste: las ruedas funcionaron y el problema solo ocurrió cuando lo estaba usando a través de conda con MKL

Sí, lo siento por eso. Editaré el título del problema para intentar recordarlo correctamente para la próxima vez.

Hm, interesante, entonces no es un problema de conda después de todo ... Curioso por qué funciona para mí ahora: /
(todo lo que puedo pensar que ha cambiado (excepto por reinstalar conda) fue reiniciar: P)

Hmmm, adivina aleatoriamente tal vez la versión mkl, aunque si creo que la salida de conda info mkl la última versión mkl (11.3.3) es del 13-05-2016.

@zhongyuk intenta construir scikit-learn dentro de un conda env que usa mkl, creo que esto debería ser suficiente para que mkl sea recogido (probablemente una buena idea en este caso hacer make clean y luego make in para reconstruir desde cero).

@lesteve Construí scikit-learn en dos entornos virtuales conda desde el código fuente (versión de la rama 0.18), el que usa MKL arroja el error; el que usa libBLAS no arroja error.

La salida que se ejecuta otool -L en sklearn/manifold/_barnes_hut_tsne.so está aquí (en caso de que la versión MKL le dé alguna pista)

``@rpath/libmkl_intel_lp64.dylib (versión de compatibilidad 0.0.0, versión actual 0.0.0)
@ rpath / libmkl_intel_thread.dylib (versión de compatibilidad 0.0.0, versión actual 0.0.0)
@ rpath / libmkl_core.dylib (versión de compatibilidad 0.0.0, versión actual 0.0.0)
@ rpath / libiomp5.dylib (versión de compatibilidad 5.0.0, versión actual 5.0.0)
/usr/lib/libSystem.B.dylib (versión de compatibilidad 1.0.0, versión actual 1226.10.1)

@zhongyuk ¡genial! Para completar, ¿puede publicar la salida de conda list '(mkl|cython|numpy|scipy)$' (en su entorno de conda MKL)? Mientras estamos en eso, la información de su CPU ( sysctl -n machdep.cpu.brand_string según Google) y la información de su plataforma ( python -c 'import platform; print(platform.platform())' ) serían excelentes.

Lo que sería realmente genial es continuar donde @rabst se detuvo y aislar aún más el problema:
https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -258311980

Dado que esto está relacionado con BLAS, mi corazonada es que algo sale mal en esta línea, lo que hace que el gradiente tenga algunos valores no finitos.

@lesteve Salida de la información del entorno conda MKL:

Cython                    0.25.1                    <pip>
mkl                       11.3.3                        0  
numpy                     1.11.1                    <pip>
numpy                     1.11.1                   py27_0 
scipy                     0.18.1              np111py27_0 

Información de CPU: Intel(R) Core(TM) i5-5257U CPU @ 2.70GHz
Información de la plataforma: Darwin-15.4.0-x86_64-i386-64bit

Analizaré el problema de explosión del gradiente que

@zhongyuk Si ayuda, tengo una configuración muy similar (ya no puedo reproducir el problema desde que reinstalé miniconda), excepto que tengo macOS Sierra en lugar de OS X El Capitan y que tengo numpy 1.11.2 en lugar de 1.11.1 .

@rasbt hmm, me pregunto si el problema desaparece en Sierra ... No quiero actualizar el sistema operativo todavía b / z Creí haber leído en alguna parte que TensorFlow aún no es compatible con Sierra (podría estar equivocado o ya no ser cierto ya que no recuerdo dónde ni hace cuánto lo leí)? Y no quiero romper mis proyectos con la dependencia de TF

@zhongyuk Hm, creo que es poco probable que esté relacionado. Antes de reinstalar miniconda, también tenía el problema en macOS Sierra. PD: Tensorflow funciona bien para mí en Sierra, pero solo hago CPU y prototipos en mis macs, así que no sé acerca de los problemas de GPU relacionados con Sierra

@rasbt hmm, es bueno saber que TF funciona bien en Sierra. ¿Quiere ejecutar otool -L en el archivo sklearn/manifold/_barnes_hut_tsne.so en su plataforma para ver qué biblioteca matemática sklearn usa debajo? Al menos de esa manera, podríamos saber si el problema desapareció después de reinstalar miniconda está fundamentalmente vinculado a la biblioteca de matemáticas.

Obtengo lo siguiente en _barnes_hut_tsne.cpython-35m-darwin.so :

    @rpath/libmkl_intel_lp64.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmkl_intel_thread.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libmkl_core.dylib (compatibility version 0.0.0, current version 0.0.0)
    @rpath/libiomp5.dylib (compatibility version 5.0.0, current version 5.0.0)
    /usr/lib/libSystem.B.dylib (compatibility version 1.0.0, current version 1197.1.1)

@rasbt Hmm, eso es realmente interesante. También está usando MKL. No sé lo suficiente sobre la biblioteca de matemáticas para especular qué significa esto ... @lesteve probablemente podrá inferir más de esto.

Noté que en mi plataforma libmkl_intel_lp64.dylib no está cargado ... ¿Es posible que eso haya causado el problema?

¡Vaya, sí! es causado por libmkl_intel_lp64.dylib no cargado !!! Encontré este hilo en el desbordamiento de la pila y luego ejecuté conda install --debug mkl , luego ejecuté otool -L en el archivo sklearn/manifold/_barnes_hut_tsne.so , luego libmkl_intel_lp64.dylib cargado y ejecuté el fragmento de código , ¡el error desapareció! ¡Que trabajen en equipo cinco! @rasbt

Si alguien más pudiera verificar su plataforma y ver si el error desapareció después de asegurarse de que libmkl_intel_lp64.dylib esté cargado, ¡sería genial!

@lesteve Dado que parece que muchas personas han tenido este problema, y ​​parece que está relacionado con (¿alguna versión de?) conda que no extrae bibliotecas MKL completas (mi comprensión de la situación hasta ahora), aunque no lo es un error de scikit-learn, creo que sería bueno agregar algún tipo de comentario o advertencia o mensajes de error a los usuarios (OS X). De esa manera, al menos pueden verificar si MKL lib está completamente extraído en su plataforma y luego arreglarlo si no es así.

@zhongyuk increíble, ¡me alegra saber que libmkl_intel_lp64.dylib , eso sería increíble (en términos de saber qué está pasando) :). Eso también explicaría por qué me funciona ahora después de volver a instalar Miniconda ... Sería genial si alguien más pudiera probar la "solución".

Si el libmkl_intel_lp64.dylib realmente causó este problema, la pregunta restante sería cómo lidiar con eso en scikit-learn. Quiero decir, este "error" es un poco espantoso y puede ser un poco complicado para la gente darse cuenta de que se debe a libmkl_intel_lp64.dylib . Probablemente no inyectaría un "si el gradiente contiene inf raise error + message" en el código de scikit-learn, ya que podría resultar bastante molesto en cuanto al rendimiento. Sin embargo, creo que agregar una nota o comentario en la instalación y / o documentos de T-SNE sería una buena idea.

Solo quiero agregar una actualización rápida: tenía 2 envs virtuales en conda que usaban MKL. Uno de ellos está equipado con numpy 1.11.1 y el otro está equipado con numpy 1.11.2 . Ejecutar otool -L indicó que ambos de alguna manera no tenían libmkl_intel_lp64.dylib cargados. Después de asegurarse de que libmkl_intel_lp64.dylib cargó, el error desapareció en el entorno virtual con numpy 1.11.2 . Sin embargo, el error siguió apareciendo en el env con numpy 1.11.1 . Después de actualizar numpy a 1.11.2, ya no puedo reproducir el error en ninguno de los entornos virtuales de conda. Como suena complicado y la causa exacta del error aún es oscura, supongo que probablemente sea una complicación entretejida por la carga incompleta de la biblioteca MKL y las bibliotecas dependientes de scikit-learn (¿posiblemente numpy?). (Aunque no he intentado crear un virtualenv con MKL y numpy 1.11.1 para ver si esto reproduciría el error).

¡Y segundo la sugerencia de @rasbt sobre agregar algún tipo de nota, comentario o documentos!

@zhongyuk ¡ me alegro de que lo hayas arreglado! Parece que reinstalar paquetes con conda puede ayudar, pero me temo que no parece haber una imagen muy clara de la causa del problema :(.

Esto es un error de conda, ¿verdad? ¿O alguien experimentó el error al no usar conda?

Me las arreglé para encontrar una manera de reproducir, creo, instalando la rueda numpy y luego scikit-learn a través de conda encima (obtuve la pista de la salida conda list en https://github.com/scikit- learn / scikit-learn / issues / 6665 # issuecomment-262800762 donde se enumeran dos numpy ).

conda create -n tmp python=3 -y
. activate tmp
pip install numpy -y
conda install scikit-learn -y

luego ejecute el fragmento de https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -262800762.

Entonces parece que esto está sucediendo al mezclar numpy instalado a través de pip y conda. En mi libro, esto nunca es una buena idea mezclar pip y conda para un paquete dado, pero supongo que esto puede suceder sin darse cuenta con bastante facilidad (por ejemplo, instalas un proyecto que depende de numpy a través de pip y luego scikit-learn a través de conda ).

Por qué sucede esto exactamente, no lo sé ... y parece que solo sucede en OSX por cierto (es decir, no en mi caja de Ubuntu).

Para cualquier persona afectada por esto, esto debería solucionarlo:

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

Avísame si eso no te funciona.

Gracias por la inmersión profunda (¡de nuevo!) @Lesteve

¡Pensé que nunca llegaríamos al fondo de este para ser honesto :)! Está bien, no es el fondo, pero es lo suficientemente bajo en lo que a mí respecta.

Tengo que admitir que todavía me gustaría entender qué está sucediendo dentro del numpy instalado con pip y conda ...

Hola
Probé dos configuraciones, donde

  • TSNE funciona bien con una configuración (donde Tensorflow está desactivado, Python-3.x), sin embargo,

  • TSNE no funciona con la otra configuración (donde Tensorflow está activado, Python 2.x).

La configuración donde TSNE funciona bien:

Terminal:

Macbook:~ BG$ which jupyter
/Users/BG/anaconda/bin/jupyter

Cuaderno Jupyer:

import sys
print (sys.version)

>

3.5.2 |Anaconda 4.2.0 (x86_64)| (default, Jul  2 2016, 17:52:12) 
[GCC 4.2.1 Compatible Apple LLVM 4.2 (clang-425.0.28)]

Nota: lo intenté

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

para que TSNE funcione bien con Tensorflow desactivado.
Sin embargo, con la nueva configuración a continuación (donde tengo que usar Tensorflow), esto ya no funciona.
——-———-———-———-———-———-———————-

La configuración donde TSNE no funciona:

Terminal:

Macbook:~$ source activate tensorflow
(tensorflow) Macbook:~$ which jupyter
/Users//anaconda/envs/tensorflow/bin/jupyter
(tensorflow) Macbook:~$ 

Cuaderno Jupyer:

import sys
print (sys.version)

>

2.7.13 |Continuum Analytics, Inc.| (default, Dec 20 2016, 23:05:08) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]

Error :
ValueError: array must not contain infs or NaNs

Alguna sugerencia ? Muchas gracias

Interesante. Creo que no tiene nada que ver con tensorflow; mi conjetura es que

[GCC 4.2.1 Compatible con Apple LLVM 4.2 (clang-425.0.28)]

vs

[GCC 4.2.1 Compatible con Apple LLVM 6.0 (clang-600.0.57)]

es el culpable?

Gracias por la respuesta :) ¿Alguna solución sugerida / to_do_list?

Necesita usar ambos
Tensorflow y
TSNE
en el cuaderno Jupyter ....

Por cierto: sólo probé "desde __future__ import division" en Python 2.xy no resolvió el problema.

Hm, no estoy seguro de si eso ayuda; personalmente, ya no tengo este problema misterioso con

Python 3.5.3 |Continuum Analytics, Inc.| (default, Feb 22 2017, 20:51:01) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] on darwin

También estoy en Tf (ahora 1.0), y ya no tengo este problema Error: ValueError: array must not contain infs or NaNs cuando ejecuto

import numpy as np
from sklearn.manifold import TSNE

np.random.seed(1)

a = np.random.uniform(size=(100, 20))
TSNE(n_components=2, random_state=1).fit_transform(a)

que anteriormente no funcionó.

Tal vez intente crear un nuevo entorno de Python 3.5 y pruebe el fragmento mencionado anteriormente para ver si funciona sin errores:

conda create -n yourenv python=3.5 numpy scipy scikit-learn
source activate yourenv
pip install tensorflow(-gpu)

Hola rasbt,
Sí, hice que TSNE funcionara en Python 3.5.
Sin embargo, por alguna otra razón, será mejor que use Python 2.7, así que tengo que seguir explorando ... cruzar los dedos

Gracias por tu ayuda.

¿Tiene instalada una distribución antigua (más) de Miniconda / Anaconda 2.7? En este caso, tal vez considere instalar uno de los más recientes, o actualice su raíz de conda o python predeterminado y pruébelo de nuevo (o cree un nuevo env py 27 sustituyendo 3.5 por 2.7 en conda create -n yourenv python=3.5 numpy scipy scikit-learn ). (no estoy seguro de si esta es realmente la razón, pero creo que LLVM 4.2 (clang-425.0.28) puede ser un problema; ya que el error no parece ocurrir a través de [GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)] )

Actualización: TSNE (perplejidad = 30, n_components = 2, init = 'pca', n_iter = 1000, method = 'exact' ) haz que funcione ...
method = 'exact' fue el truco.

También he tenido este problema. Usar method = 'exact' parece funcionar para mí, pero es tan dolorosamente lento. ¿Realmente no hay otra solución que la gente haya encontrado?

¿Ha leído https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264029983 y https://github.com/scikit-learn/scikit-learn/issues/6665#issuecomment -264087057 ?

La única forma en que logré reproducir este problema fue instalar numpy con pip y conda en el mismo entorno de conda. Si crea un entorno conda desde cero, no debería tener este problema.

En caso de que su problema no parezca coincidir con esta descripción, publique los comandos exactos que ejecutó para crear su entorno conda, para que podamos intentar reproducirlo.

Hola,
Leí los comentarios anteriores y puedo reproducirlos. Volví a ejecutar el código de hace unas semanas y ahora aparece este problema. Aquí hay un ejemplo mínimo que ahora reproduce este problema:

from sklearn.manifold import TSNE
a = [[1,2,3],[4,5,6], [7,8,9]]
TSNE(n_components=2,).fit_transform(a)

Y la salida de

import platform; print(platform.platform())
import sys; print("Python", sys.version)
import numpy; print("NumPy", numpy.__version__)
import scipy; print("SciPy", scipy.__version__)
import sklearn; print("Scikit-Learn", sklearn.__version__)

es

Darwin-16.5.0-x86_64-i386-64bit
Python 3.6.0 |Anaconda 4.3.0 (x86_64)| (default, Dec 23 2016, 13:19:00) 
[GCC 4.2.1 Compatible Apple LLVM 6.0 (clang-600.0.57)]
NumPy 1.12.1
SciPy 0.19.0
Scikit-Learn 0.18.1

Nuevamente, cambiar el método a exacto ( TSNE(method='exact') ) elimina el error.

De manera más general, he notado resultados tremendamente diferentes al usar el TSNE de sklearn (con perplejidad idéntica y otros parámetros) de la implementación de bh publicada por Laurens van der Maaten y la versión de MATLAB. Me pregunto si puede haber una conexión.

Eso lo arregló. Mis disculpas: había desinstalado por separado un numpy, scikit learn y scipy reinstalados, pero no como en 6665.

Tuve el mismo problema que se informó aquí y no uso conda.

Mi versión de Python se instala a través de brew en macOS Sierra 10.12.4

Python 3.6.1
scipy==0.19.0
scikit-learn==0.18.1
numpy==1.11.1

Agregar mode='exact' resolvió mi problema.

@lesteve : tuve este error al usar la configuración que describe (dos versiones de numpy instaladas). simplemente actualizar la instalación conda de numpy a la misma versión que la instalación de pip (1.12.1) me sirvió. Sin embargo, eliminé la instalación de pip numpy, ya que no tenía la intención de tener dos versiones :)

@lesteve : ¡Gracias por la solución! Tuve este error y luego encontré esta discusión. Solucionarlo de inmediato después de eliminar la versión duplicada de numpy.

Replicado He eliminado las instalaciones de pip de numpy y actualizado conda.

Darwin-16.7.0-x86_64-i386-64bit
('Python', '2.7.13 | Anaconda personalizado (x86_64) | (predeterminado, 20 de diciembre de 2016, 23:05:08) \ n [GCC 4.2.1 Compatible con Apple LLVM 6.0 (clang-600.0.57)]')
('NumPy', '1.13.1')
('Ciencia ficción', '0.19.0')
('Scikit-Learn', '0.18.1')

Parece estar bien en mi máquina Linux Linux:
Linux-3.0.101-0.47.71-predeterminado-x86_64-con-SuSE-11-x86_64
('Python', '2.7.12 | Anaconda 2.3.0 (64 bits) | (predeterminado, 2 de julio de 2016, 17:42:40) \ n [GCC 4.4.7 20120313 (Red Hat 4.4.7-1) ] ')
('NumPy', '1.12.1')
('Ciencia ficción', '0.19.1')
('Scikit-Learn', '0.18.1')

@wolfiex así que lo hiciste

conda remove numpy --force -y
pip uninstall numpy -y
conda install numpy

Algo relacionado, le recomiendo que actualice a scikit-learn 0.19 que tiene algunas correcciones en t-SNE

obteniendo el mismo error ahora

Hola @rahulsnair , ¿te importaría abrir un nuevo número, con código reproducible, tu rastreo y las versiones que estás usando? Este problema es bastante antiguo y el código ha cambiado mucho. ¡Gracias!

¿Fue útil esta página
0 / 5 - 0 calificaciones