iT邦幫忙

1

Keras 跑LSTM模型卡在epoch 1/N 的地方不動 (Theano 後端 win10 OS)

各位大大好,小弟是 ML 剛入門的新手,自己在嘗試建 LSTM 模型,在 model.fit() 的過程,程式跑到 epoch 1/N 就開始不會動了,不過我看 jupyter notebook 的 kernel 是一直在運行的,memory 感覺也有在變動(但是動一下就不動了),CPU 也是使用率突然升高一陣子之後就沒再動了。

不知道各位大大有沒有類似的經驗可以指點迷津><感恩~~
下方是我的 code ,請參考:

x_train = [[[0.         0.04516129 0.         0.05696203]
            [0.0754717  0.03870968 0.00632911 0.        ]
            [0.01886792 0.         0.01898734 0.01898734]
            ...
            [0.21383648 0.22580645 0.20253165 0.24050633]
            [0.25157233 0.24516129 0.24683544 0.25316456]
            [0.26415094 0.29032258 0.26582278 0.28481013]]
            
           [[0.6163522  0.59354839 0.62025316 0.60759494]
            [0.6163522  0.59354839 0.60759494 0.59493671]
            [0.59748428 0.58709677 0.60126582 0.60126582]
            ...
            [0.64779874 0.62580645 0.65189873 0.63924051]
            [0.65408805 0.63225806 0.65822785 0.64556962]
            [0.64779874 0.62580645 0.65189873 0.63924051]]]
            
y_train =  [0.29746835 0.27848101 0.27848101 ... 0.64556962 0.63924051 0.64556962]

def build_model(input_length, input_dim):
    d = 0.25
    model = Sequential()
    model.add(LSTM(30, input_shape=(input_length, input_dim), return_sequences=True))
    model.add(Dropout(d))
    model.add(LSTM(30,input_shape=(input_length, input_dim), return_sequences=False))
    model.add(Dropout(d))
    model.add(Dense(6,kernel_initializer="uniform",activation='relu'))
    model.add(Dense(1,kernel_initializer="uniform",activation='linear'))
    model.compile(loss='mse',optimizer='adam', metrics=['accuracy'])
    return model

#建立model
model = build_model(30, 4)
train_history = model.fit( x_train, y_train, batch_size=1, epochs=5, validation_split=0.25, verbose=2, use_multiprocessing=False)

output:(卡在這邊不動)
https://ithelp.ithome.com.tw/upload/images/20191014/201108723AQxZvDP8p.png

huahualiu iT邦新手 4 級 ‧ 2019-10-21 17:46:18 檢舉
問題目前已解決,雖然解決方式有點偷吃步,不過還是提供幾個想法:
(我的解法)
1.後來先棄用theano 改用tensorflow-gpu (用V2版本的)
2.但訓練的時候其實還是出現上述錯誤,所以我後來先用這個方式(https://www.tensorflow.org/api_docs/python/tf/test/is_gpu_available)來測試GPU是否有讀到,但一開始出現錯誤,因此先確認GPU所需的 cuda 以及 cudnn 兩個套件有無安裝。
3. 確認套件安裝完成後,又發現錯誤,到NVDIA控制板看他所驅動的cuda版本是10.1 版,但是 tensorflow2 只支援到 cuda10.0 ,因此必須把GPU的驅動程式全部清除重新安裝,確認裝上去是10.0版本的。
4. 重新跑一次(2)的function,就成功了,再 train 原先的 model 就可以了
【總結--大概就這幾種東西嘗試一遍就可】
* 如果是GPU版本,先測試GPU到底正不正常(找官方測試函式庫使用)
* 確認GPU 所需套件(cuda、cudnn toolkit)版本是有支援的(太新會掛掉)
* 換kernel(theano -> tensorflow)看看
* 全部刪掉(tensorflow、keras、sciki-learn、GPU驅動)重裝一次

尚未有邦友回答

立即登入回答