带有Tensorflow-gpu的Keras完全冻结了PC

时间:2018-07-13 07:40:11

标签: python tensorflow crash keras deep-learning

我有非常简单的架构lstm NN。 1-2个星期之后,我的PC完全死机了,我什至无法移动鼠标:

Layer (type)                 Output Shape              Param #   
=================================================================
lstm_4 (LSTM)                (None, 128)               116224    
_________________________________________________________________
dropout_3 (Dropout)          (None, 128)               0         
_________________________________________________________________
dense_5 (Dense)              (None, 98)                12642     
=================================================================
Total params: 128,866
Trainable params: 128,866
Non-trainable params: 0

    # Same problem  with 2 layers LSTM  with dropout and Adam optimizer

    SEQUENCE_LENGTH =3, len(chars) = 98
    model = Sequential()
    model.add(LSTM(128, input_shape = (SEQUENCE_LENGTH, len(chars))))
    #model.add(Dropout(0.15))
    #model.add(LSTM(128))
    model.add(Dropout(0.10))
    model.add(Dense(len(chars), activation = 'softmax'))

    model.compile(loss = 'categorical_crossentropy', optimizer = RMSprop(lr=0.01), metrics=['accuracy'])

这是我的训练方式:

history = model.fit(X, y, validation_split=0.20, batch_size=128, epochs=10, shuffle=True,verbose=2).history

NN需要5分钟才能完成1个纪元。批处理大小较大并不意味着问题会更快出现。但是更复杂的模型可以训练更多的时间来达到几乎相同的精度-大约为0.46(完整代码here

我最新的Linux Mint是1070ti,带有8GB,32Gb内存

+-----------------------------------------------------------------------------+
| NVIDIA-SMI 396.26 Driver Version: 396.26 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 GeForce GTX 107... Off | 00000000:08:00.0 On | N/A |
| 0% 35C P8 10W / 180W | 303MiB / 8116MiB | 0% Default |
+-------------------------------+----------------------+----------------------+

图书馆:

Keras==2.2.0
Keras-Applications==1.0.2
Keras-Preprocessing==1.0.1
keras-sequential-ascii==0.1.1
keras-tqdm==2.0.1
tensorboard==1.8.0
tensorflow==1.0.1
tensorflow-gpu==1.8.0

我曾尝试限制GPU内存的使用,但这在这里不是问题,因为在训练过程中它仅消耗1 GB的gpu内存:

from keras.backend.tensorflow_backend 
import set_session config = tf.ConfigProto() 

config.gpu_options.per_process_gpu_memory_fraction = 0.9 

config.gpu_options.allow_growth = True set_session(tf.Session(config=config))

这是怎么了?如何解决该问题?

2 个答案:

答案 0 :(得分:1)

  • 请先删除tensorflow==1.0.1的CPU版本。尝试从here的来源构建TensorFlow来安装tensorflow-gpu==1.8.0

  • 在GPU上训练模型时,将LSTM替换为CuDNNLSTM。稍后将训练后的模型权重加载到具有LSTM层的相同模型体系结构中,以在CPU上使用该模型。 (重新加载CuDNNLSTM模型权重时,请确保在LSTM层中使用recurrent_activation='sigmoid'!)

答案 1 :(得分:0)

这对我来说有点奇怪,但是问题与我刚从AMD于2018年4月发布的新CPU有关。因此,拥有最新的Linux内核至关重要:按照本指南https://itsfoss.com/upgrade-linux-kernel-ubuntu/,我将内核从4.13更新到4.17-现在一切正常

UPD:主板也使系统崩溃了,我已经更改了它-现在一切正常