gpt4 book ai didi

python - 为什么网络学习效果不高(Tensorflow - 用于文本生成的 LSTM)?

转载 作者:太空宇宙 更新时间:2023-11-03 16:08:15 24 4
gpt4 key购买 nike

当我最初在莎士比亚语料库上运行 2 个 LSTM 网络(每个 512 个单元)时,经过 2 个 epoch 的训练(其中每个 epoch = 数据集的一个周期),我得到了相当不错的输出。这是:

我最好的病房他是你从他那个时代起就让贵族感到佩服的人吗?

维根公爵:所以,这个人,更重要的是,舌头是一个整体,你将与每一堵墙融为一体。

霍尔:嘿,您的大厅,请对我唯一的男人先生说好话,两人用您和我的永远的方式作为堡垒,将折痕。

哈莱特:

它仍在学习,损失为 1.73,并且损失图表并未趋于平稳。然而,在所有后续运行 (10) 中,它一直无法取得尽可能好的结果 - 例如,在 6 个 epoch 之后,在我随后的最佳运行中,它的损失为 2.43,并且趋于平稳 -这是输出:

修士?我的脚趾或内鲁怎么样 o inain me c ahes oisteese 和 th thet ot spr h 坐在摩西·勒穆德的耶顿·德·胡埃斯特里德面前,我们将增加脚趾练习和家庭回顾哈德·蒂克·特·奥福雷爵士hhe serined o chane the ertrs aine thele aelt To tee g te 哦,所以,我们一定会住在他那里,但在 jnt hu作为 ehmug te 到 fare t ceTo tha mhn hi did r t ter oe hirrat ft thr ionyoee wh eoo that e cade tientta Totike a r hee ta the he

这与 4、5、6 epoch 后的输出类似。最常见的是,在初始运行之后的运行中,网络会在损失 2.70 后趋于平稳。

This is the graph of the loss 我还发布了代码:

from __future__ import absolute_import, division, print_function
import os
import numpy as np
import tflearn
from tflearn.data_utils import *
from tflearn.layers.estimator import regression


inputs, targets, char_dict = \
textfile_to_semi_redundant_sequences("shakespeare_input.txt", seq_maxlen=20) #helper - vectorises text



LSTM = tflearn.input_data([None, 20, len(char_dict)])
LSTM = tflearn.lstm(LSTM, 512, return_seq=True, restore=True, dropout = 0.5)
LSTM = tflearn.lstm(LSTM, 512, restore=True, dropout = 0.5)
LSTM = tflearn.fully_connected(LSTM, len(char_dict), activation='softmax')

LSTM = tflearn.regression(LSTM, optimizer= 'adam', loss='categorical_crossentropy',
learning_rate=0.001)

LSTMmodel = tflearn.SequenceGenerator(LSTM, dictionary=char_dict,
seq_maxlen=20,
clip_gradients=5.0, tensorboard_verbose=0,tensorboard_dir='pathfile/logs')

#LSTMmodel.load('/pathfile/LSTMmodel.tfl')
for i in range(10):
print("-- TESTING...")
starting = random_sequence_from_textfile("shakespeare_input.txt", 20)
output_path = 'pathfile/epoch_' + str(i) + '_output.txt'
generated_output = LSTMmodel.generate(500, temperature=1.0, seq_seed=starting)
text_file = open(output_path, "w") #save the outputs to a text file - allows us to view progress of model
text_file.write("With temperature 1.0: \n \n \n") #two different temperatures - higher temp = more novel
text_file.write(generated_output)
generated_output = LSTMmodel.generate(500, temperature=0.5, seq_seed=starting) #lower temp = more accurate to original text
text_file.write("\n \n \n With temperature 0.5: \n \n \n")
text_file.write(generated_output)
text_file.close()
print("-- TRAINING...")
LSTMmodel.fit(inputs, targets, batch_size=200, n_epoch=1, run_id='Shakespeare_Generator',shuffle = True)
print("-- SAVING MODEL...")
if (i%2==0):
LSTMmodel.save("pathfile/LSTMmodel.tfl")
else:
LSTMmodel.save("pathfile//LSTMmodel2.tfl")
print("-- EPOCH " + str(i+1) +" COMPLETE...")

由于我在一台具有 4GB RAM 的旧双核 i3 上运行此程序,因此网络需要 6 小时 45 分钟才能完成一个 epoch。当然,至少需要两个时期才能看到结果。不幸的是,我无法继续调整代码并运行和重新运行。我还受到计算机内存的限制,因为 4 个内存中的 1GB 分配给 Ubuntu,另外 3 个分配给 Windows。因此,我只能训练一个小型网络。

如果有人可以提供预训练网络的链接,我将不胜感激

最佳答案

我没有这个模型的答案,但是您是否尝试过从莎士比亚生成 LSTM 的现有示例开始,例如这个?

https://github.com/sherjilozair/char-rnn-tensorflow

训练起来应该会更快一些,如果您从一个工作示例开始,那么调试出问题的地方可能会更容易。

关于python - 为什么网络学习效果不高(Tensorflow - 用于文本生成的 LSTM)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39551564/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com