Pytorch中未改进Keras中的相同工作模型

时间:2019-04-20 00:18:28

标签: python keras pytorch

我正在转换基本的LSTM多对一体系结构,以预测序列中的下一个单个元素,用Keras编写为Pytorch。 NN体系结构如下(可以在here中找到整个代码):

import pyautogui
from time import sleep
from threading import Thread

def click_function():
    while True:
        x, y = pyautogui.position()
        pyautogui.click(x, y, button='left')
        sleep(0.5)  # an acceptable waiting time between one click and another

t = Thread(target=click_function)
t.daemon = True
t.start()
sleep(60)
# Here you put the amount of time you want the program
# to run, in seconds. This will ensure that the program
# stops sometime and you don't get stuck.

使用相同的数据运行两个模型(是的,我已经明确检查过),两个模型的损失值都约为4,但是大约100个历元之后,Keras已经达到了0.02的损失,这给出了理想的结果

但是,Pytorch模型在20个周期后停留在3.4左右。我已经尝试了很多事情:

  • 玩LR:当LR过高时会爆炸,因此这意味着至少正在更新参数。
  • 不同的优化器,SGD,Adam,RMSprop,但所有结果相同。
  • 访问最后一个序列元素时,在sleep(n)n和索引之间切换。
  • 添加,删除和修改非线性激活函数和退出。
  • 删除x_0和h_0的手动初始化。

这是我的模型的代码:

model = Sequential()
model.add(LSTM(
    512,
    input_shape=(network_input.shape[1], network_input.shape[2]),
    return_sequences=True
))
model.add(Dropout(0.3))
model.add(LSTM(512, return_sequences=True))
model.add(Dropout(0.3))
model.add(LSTM(512))
model.add(Dense(256))
model.add(Dropout(0.3))
model.add(Dense(n_vocab))
model.add(Activation('softmax'))
model.compile(loss='categorical_crossentropy', optimizer='rmsprop')

以及培训过程:

.view[]

0 个答案:

没有答案