繁体   English   中英

Matplotlib 在训练 model 后杀死 jupyter kernel

[英]Matplotlib kills jupyter kernel after training model

我在 Jupyter 笔记本中运行了一个神经网络,我想 plot 结果(损失与纪元数)。 我可以毫无问题地运行 model,但即使是简单的 matplotlib plot 也会杀死 Z50484C19F1AFDAEDF3D821。

这是创建 model 和我想使用的数据的代码:

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)]

这按预期工作。 但是,当我尝试使用以下代码对 plot 数据进行处理时,我收到一条消息: “kernel 似乎已经死了。它将自动重新启动。”

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()

I can restart the kernel and make matplotlib plots, but when I try to make a plot after running the model matplotlib causes the error to appear. 我已尝试将 keras、tensorflow、matplotlib 和 Z2EA9510C37F7F89E4941FF75F62F2 更新为无效果。 任何人都可以提供有关为什么会发生这种情况的见解并提供解决方案吗?

我使用了最新的 tensorflow 并从 tensorflow 导入了 keras。 一切都按预期工作。 我改变了前三行,如下所示。 完整代码在这里

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

以下 plot 显示了历元与损失

在此处输入图像描述

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM