2014-10-10 5 views
1

я получаю ошибку в тетради IPython говоря The kernel appears to have died. It will restart automatically., когда я запускаю следующий код:Kernel перезагрузка работает IPython + PyMC

from sklearn.datasets import load_boston 
import numpy as np 
import pymc as pm 
import pandas as pd 

boston = load_boston() 
features = ['INDUS', 'NOX', 'RM', 'TAX', 'PTRATIO', 'LSTAT'] 
df = pd.DataFrame(boston.data, columns=boston.feature_names) 
X = np.array(df.ix[:, features]) 
y = boston.target 

gamma = pm.Binomial('gamma', 1, 0.5, size=len(features)) 
var = pm.Lambda('var', lambda gamma=gamma: (1-gamma)*0.001 + gamma*10) 
prec = pm.Lambda('prec', lambda var=var: 1.0/var) 
b = pm.Normal('b', 0, prec) 
int_ = pm.Normal('int_', 0, 0.01) 
taue = pm.Gamma('taue', 0.1, 0.1) 
mu = int_ + X[:,0]*b[0] + X[:,1]*b[1] + X[:,2]*b[2] + X[:,3]*b[3] + X[:,4]*b[4] + X[:,5]*b[5] 
observed = pm.Normal('obs', mu, taue, observed=True, value=y) 
M = pm.MCMC([observed, mu, int_, b, prec, var, gamma]) 
M.sample(10000, 500, 5) 

pm.Matplot.plot(M) 

В случае это уместно, я пытаюсь воспроизвести пример Выбор байесовской переменной из этого page (код WinBUGS, страница 14). Иногда ядро ​​терпит неудачу, когда я запускаю M.sample(), но большую часть времени, когда появляется ошибка при запуске pm.Matplot.plot(M)

Я также пытался использовать ipython qtconsole, но результат тот же. В ipython он вызывает ошибку сегментации. Я использую среду conda с ipython 2.3.0, matplotlib 1.4.0, pandas 0.14.1, scikit-learn 0.15.2, pymc 2.3.4 и python 2.7.8. Я создал новую среду с ipython 3.0.0, но эта проблема остается.

Может ли кто-нибудь воспроизвести эту проблему?

UPDATE:

Я попробовал этот пример в экземпляре EC2 с использованием свежей среды Анаконды и это единственный пример, который я мог найти, что дает ошибки. Только часть кода, мне нужно, чтобы добавить было следующее:

import matplotlib as mpl 
mpl.use('Agg') 
import matplotlib.pyplot as plt 

Поэтому я в основном работает это в IPython:

import matplotlib as mpl 
mpl.use('Agg') 
import matplotlib.pyplot as plt 
%run model 

где model является файл, содержащий точно такой же код, который я изначально , Ошибки немного меняются. Например:

IndexError        Traceback (most recent call last) 
/home/ubuntu/model.py in <module>() 
    16 int_ = pm.Normal('int_', 0, 0.01) 
    17 taue = pm.Gamma('taue', 0.1, 0.1) 
---> 18 mu = int_ + X[:,0]*b[0] + X[:,1]*b[1] + X[:,2]*b[2] + X[:,3]*b[3] + X[:,4]*b[4] + X[:,5]*b[5] 
    19 observed = pm.Normal('obs', mu, taue, observed=True, value=y) 
    20 M = pm.MCMC([observed, mu, int_, b, prec, var, gamma]) 

IndexError: index 0 is out of bounds for axis 1 with size -4611686018427387904 

*** Error in `/home/ubuntu/anaconda/envs/env3/bin/python': double free or corruption (out): 0x00000000028a0b00 *** 
Aborted (core dumped) 

Еще один:

In [5]: %run model 
[-----------------100%-----------------] 10000 of 10000 complete in 17.7 sec/home/ubuntu/anaconda/envs/env3/lib/python2.7/site-packages/numpy/core/fromnumeric.py:2499: VisibleDeprecationWarning: `rank` is deprecated; use the `ndim` attribute or function instead. To find the rank of a matrix see `numpy.linalg.matrix_rank`. 
    VisibleDeprecationWarning) 
Plotting int_ 
Plotting prec_0 
Plotting prec_1 
Plotting prec_2 
Plotting prec_3 
Plotting prec_4 
Plotting prec_5 
Plotting var_0 
Plotting var_1 
Plotting var_2 
Plotting var_3 
Plotting var_4 
Plotting var_5 
Plotting gamma_0 
Plotting gamma_1 
Plotting gamma_2 
Plotting gamma_3 
Plotting gamma_4 
Plotting gamma_5 
Plotting b_0 
Plotting b_1 
Plotting b_2 
Plotting b_3 
Plotting b_4 
Plotting b_5 
*** Error in `/home/ubuntu/anaconda/envs/env3/bin/python': double free or corruption (out): 0x00000000023dc940 *** 
Aborted (core dumped) 

Опять же, похоже на ошибку выше:

In [6]: %run model 
[-----------------100%-----------------] 10000 of 10000 complete in 18.4 secPlotting var_0 
*** Error in `/home/ubuntu/anaconda/envs/env3/bin/python': double free or corruption (out): 0x00000000035f0f10 *** 
Aborted (core dumped) 

Это один происходит раньше:

In [13]: gamma = pm.Binomial('gamma', 1, 0.5, size=len(features)) 
Segmentation fault (core dumped) 

И, наконец:

In [22]: M.sample(10000, 500, 5) 
Segmentation fault (core dumped) 

Время от времени код работает правильно и создает несколько графиков. Для сравнения, я также побежал this example и this one без проблем.

This - это список пакетов, которые я установил в среде conda.

ответ

0

Это работает очень хорошо здесь, с Python 2.7.6 и IPython 3.0.0-dev. Можете ли вы попробовать обновить/изменить свой Matplotlib?

+0

спасибо. Я попробую это. –

+0

Использование Ipython 2.3.0 и matplotlib, установленных из мастер-ветви, помогает немного. Когда я запускаю код в первый раз, он работает. Однако, если я повторно запускаю тот же код снова, он перезапускает ядро ​​при построении графика. Я снова установлю Ipython 3.0.0-dev, чтобы узнать, помогает ли это. –

+0

Ipython 3.0.0-dev не помогает вообще. На самом деле, иногда перезапускается перед построением и производит то же поведение, что и в ipython 2.3.0 после повторного запуска кода. У вас что-то другое в вашей среде? –