Matplotlib убивает ядро ​​юпитера после тренировки модели - PullRequest
1 голос
/ 23 апреля 2020

Я запустил нейронную сеть в записной книжке Jupyter, и я хочу отобразить результаты (потери по сравнению с числом эпох). Я могу запустить модель без проблем, но тогда даже простой сюжет matplotlib убивает ядро.

Вот код, который создает модель и данные, которые я хочу использовать:

from keras import models
from keras import layers
import matplotlib.pyplot as plt
import numpy as np
%matplotlib inline

from keras.datasets import imdb
(train_data, train_labels), (test_data, test_labels) = imdb.load_data( num_words=10000)

# Change review into array
def vectorize_sequences(sequences, dimension=10000): 
    results = np.zeros((len(sequences), dimension)) # create all-zero matrix
    for i, sequence in enumerate(sequences):
        results[i, sequence] = 1. # If review has word, change that index to 1
    return results

x_train = vectorize_sequences(train_data)
x_test = vectorize_sequences(test_data)
y_train = np.asarray(train_labels).astype('float32') 
y_test = np.asarray(test_labels).astype('float32')

# Create model
model = models.Sequential()
model.add(layers.Dense(16, activation='relu', input_shape=(10000,))) # two int. layers w/16 hidden units each
model.add(layers.Dense(16, activation='relu')) 
model.add(layers.Dense(1, activation='sigmoid')) # outputs the scalar prediction
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['accuracy'])

# Create mini-test data
x_val = x_train[:10000]
partial_x_train = x_train[10000:]
y_val = y_train[:10000]
partial_y_train = y_train[10000:]

# fit model
history = model.fit(partial_x_train, partial_y_train, epochs=20, batch_size=512, validation_data=(x_val, y_val))

# Get values for plot
history_dict = history.history
history_dict.keys()
loss_values = history_dict['loss'] 
val_loss_values = history_dict['val_loss']
epoch_num = [i for i in range(1,21)]

Это работает, как и ожидалось. Однако, когда я пытаюсь отобразить данные с помощью приведенного ниже кода, я получаю сообщение: «Ядро, похоже, умерло. Оно перезапустится автоматически.»

plt.plot(epoch_num, loss_values, 'bo', label='Training loss') 
plt.plot(epoch_num, val_loss_values, 'b', label='Validation loss')
plt.title('Training and validation loss') 
plt.xlabel('Epochs')
plt.ylabel('Loss')
plt.legend()
plt.show()

Я могу перезапустите ядро ​​и создайте графики matplotlib, но когда я пытаюсь построить график после запуска модели, matplotlib вызывает ошибку. Я попытался обновить keras, tenorflow, matplotlib и numpy безрезультатно. Кто-нибудь может объяснить, почему это происходит, и предложить решение?

Ответы [ 2 ]

0 голосов
/ 26 апреля 2020

Я использовал последний тензор потока и импортировал керары из тензор потока. Все заработало как положено. Я изменил первые три строки, как показано ниже. Полный код здесь

from tensorflow import keras
from tensorflow.keras import models
from tensorflow.keras import layers

На следующем графике показана зависимость эпохи от потерь

enter image description here

0 голосов
/ 23 апреля 2020

К сожалению, у меня нет ответа, потому что ваш код работал нормально в CoLab и моей локальной установке Anaconda.

Ниже приведена информация о conda на случай, если это поможет.

conda info

     active environment : base
    active env location : C:\Users\student\Anaconda3
            shell level : 1
       user config file : C:\Users\student\.condarc
 populated config files : C:\Users\student\.condarc
          conda version : 4.8.3
    conda-build version : 3.18.9
         python version : 3.7.4.final.0
       virtual packages : __cuda=9.1
       base environment : C:\Users\student\Anaconda3  (writable)
           channel URLs : https://repo.anaconda.com/pkgs/main/win-64
                          https://repo.anaconda.com/pkgs/main/noarch
                          https://repo.anaconda.com/pkgs/r/win-64
                          https://repo.anaconda.com/pkgs/r/noarch
                          https://repo.anaconda.com/pkgs/msys2/win-64
                          https://repo.anaconda.com/pkgs/msys2/noarch
          package cache : C:\Users\student\Anaconda3\pkgs
                          C:\Users\student\.conda\pkgs
                          C:\Users\student\AppData\Local\conda\conda\pkgs
       envs directories : C:\Users\student\Anaconda3\envs
                          C:\Users\student\.conda\envs
                          C:\Users\student\AppData\Local\conda\conda\envs
               platform : win-64
             user-agent : conda/4.8.3 requests/2.22.0 CPython/3.7.4 Windows/10 Windows/10.0.18362
          administrator : False
             netrc file : None
           offline mode : False
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...