为什么我的 keras LSTM 模型陷入无限循环?

2024-04-10

我正在尝试构建一个小型 LSTM,它可以通过在现有 Python 代码上进行训练来学习编写代码(即使是垃圾代码)。我已将数百个文件中的数千行代码连接到一个文件中,每个文件以<eos>表示“序列结束”。

例如,我的训练文件如下所示:


setup(name='Keras',
...
      ],
      packages=find_packages())
<eos>
import pyux
...
with open('api.json', 'w') as f:
    json.dump(sign, f)
<eos>

我正在用以下单词创建令牌:

file = open(self.textfile, 'r')
filecontents = file.read()
file.close()
filecontents = filecontents.replace("\n\n", "\n")
filecontents = filecontents.replace('\n', ' \n ')
filecontents = filecontents.replace('    ', ' \t ')

text_in_words = [w for w in filecontents.split(' ') if w != '']

self._words = set(text_in_words)
    STEP = 1
    self._codelines = []
    self._next_words = []
    for i in range(0, len(text_in_words) - self.seq_length, STEP):
        self._codelines.append(text_in_words[i: i + self.seq_length])
        self._next_words.append(text_in_words[i + self.seq_length])

My keras型号是:

model = Sequential()
model.add(Embedding(input_dim=len(self._words), output_dim=1024))

model.add(Bidirectional(
    LSTM(128), input_shape=(self.seq_length, len(self._words))))

model.add(Dropout(rate=0.5))
model.add(Dense(len(self._words)))
model.add(Activation('softmax'))

model.compile(loss='sparse_categorical_crossentropy',
              optimizer="adam", metrics=['accuracy'])

但无论我如何训练它,该模型似乎永远不会生成<eos>甚至\n。我想这可能是因为我的 LSTM 大小是128 and my seq_length是 200,但这不太有意义?我有什么遗漏的吗?


有时,当没有limit for code generation or the <EOS> or <SOS> tokens are not numerical tokensLSTM 永远不会收敛。如果您可以发送输出或错误消息,那么调试会容易得多。

您可以创建一个额外的类来获取单词和句子。

# tokens for start of sentence(SOS) and end of sentence(EOS)

SOS_token = 0
EOS_token = 1


class Lang:
    '''
    class for word object, storing sentences, words and word counts.
    '''
    def __init__(self, name):
        self.name = name
        self.word2index = {}
        self.word2count = {}
        self.index2word = {0: "SOS", 1: "EOS"}
        self.n_words = 2  # Count SOS and EOS

    def addSentence(self, sentence):
        for word in sentence.split(' '):
            self.addWord(word)

    def addWord(self, word):
        if word not in self.word2index:
            self.word2index[word] = self.n_words
            self.word2count[word] = 1
            self.index2word[self.n_words] = word
            self.n_words += 1
        else:
            self.word2count[word] += 1

然后,在生成文本时,只需添加一个<SOS>令牌就可以了。 您可以使用https://github.com/sherjilozair/char-rnn-tensorflow https://github.com/sherjilozair/char-rnn-tensorflow,一个字符级别rnn供参考。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

为什么我的 keras LSTM 模型陷入无限循环? 的相关文章

随机推荐

  • Python:使用正则表达式获取列表索引?

    在Python中 如何获取列表中项目的位置 使用list index 使用模糊匹配 例如 如何获取以下形式的所有水果的索引 berry在下面的列表中 fruit list raspberry apple strawberry Is it p
  • 如何处理文件名中的破折号

    在装有 Windows 7 的 PC 上 我使用一个简单的批处理脚本来重命名一些 Excel 文件 并在其父文件夹名称前面添加 for f delims i in dir b AD do cd i for f delims j in dir
  • 如何将控制台输出发送/拆分/复制到 R 中的变量中?

    如何将某些代码的输出放入变量中 我希望该输出仍然发送到控制台 我更喜欢sink符号 我不想使用capture output有两个原因 它要求相应的代码是单个函数 我不想通过创建函数来捕获输出来使我的代码复杂化 它不允许捕获的输出仍然进入控制
  • PHP - getimagesize() 重定向不起作用

    问题 getimagesize 对于某些 URL 不起作用 尤其是重定向的 URL 我用谷歌搜索并检查了 stackoverflow 但无济于事 这是我在本地计算机上看到的内容 var dump getimagesize http gan
  • VB6 应用程序调用 .NET DLL OutOfMemory 异常

    我们有一个调用 NET DLL 的 VB6 应用程序 有时 在 VB6 应用程序运行很长时间并多次调用 NET 代码后 NET 方面会抛出 OutOfMemory 异常 即使计算机上有足够的可用内存 VB6 的内存空间也远未达到极限 NET
  • lapply-ing 与“$”函数

    我正在经历一些例子 https github com hadley devtools wiki Functionals exercises 1在哈德利的泛函指南中 遇到了一个意想不到的问题 假设我有一个模型对象列表 x 1 3 y 3 1
  • 使用 Multipart/Form-Data Enctype 进行表单验证失败后,Struts 1 丢失请求参数

    我有一个简单的 Struts 表单 它有几个文本字段和一个文件字段 这enctype is multipart form data在我的表格上 我在中验证actionform的 验证方法 如果文本字段为空 我会返回错误 是必要的 除了可见字
  • 如何在 R 中查找 DTM 中的术语频率?

    我一直在使用 tm 包创建 DocumentTerm 矩阵 如下所示 library tm library RWeka library SnowballC src lt DataframeSource data frame data3 Jo
  • $Proxy$_$$_Weld$EnterpriseProxy$ 代理子类是如何实现的?

    在 Java EE 7 应用程序中 假设我有一个会话 bean 类 Stateless public class MyEJB 在 Glassfish 4 下调试时 我可以看到一个名为MyEJB Proxy Weld EnterprisePr
  • 在处理 Angular2-typescript 项目时如何在 WebStorm 中隐藏 .js 和 .map 文件

    我尝试将扩展添加到 gitignore但结果如下 这些文件并未完全隐藏 在没有内置 TypeScript 编译器的情况下使用 WebStorm 时 例如 因为您正在使用其npm start已经完成编译的脚本 并且其他方法不起作用 您可以为
  • JavaScript 中的原型继承到底是如何工作的?

    我仍然没有完全理解 JavaScript 中的继承二分法 原型与经典 If the class只是原型上的语法糖 我应该如何去糖化它 您可以向我展示使用类和原型创建 React 元素的不同方法 即没有class React createCl
  • 添加批准 Instagram 客户端的功能

    我有一个经过批准的 Instagram 客户端 即我的应用程序已通过审核并已上线 并且我想向应用程序添加新功能 我听说一些应用程序的客户被撤销 我想知道 我可以在将新功能投入生产之前主动提交新功能以获得批准吗 有人对这个有经验么 我只是想避
  • 在 twitter-bootstrap 中居中模态

    我无法将我的模态集中在各种尺寸的 twitter bootstrap 中 你可以看活生生的例子here http makeshot net v 97dcd3c and here http makeshot net v 3f467c0 只需点
  • 在 Prawn 中使用堆叠边界框时自动启动新页面

    我想在 Prawn 中模拟表格的行为 但无法使用表格 因为我可以在单元格内绘制的内容受到限制 因此 我使用边界框来为每行内的元素创建上下文 我遇到的问题与行有关 我正在尝试这个 require prawn Prawn Document ge
  • 如何在 EF-Code-First 中指定主键名称

    我正在使用实体框架 Codefirst 来创建我的数据库 当我通过 ODBC 连接到 Access 2007 时 模式名称为 dbo pk Jobs 的默认主键似乎扰乱了它 如果我手动编辑名称并删除架构名称并将该主键重命名为 pk jobs
  • Jekyll 2.1 中的 SCSS @import

    我有这个项目结构 Project css main scss sass base layout pages vendor 我的 main scss 文件的内容 import sass base reset import sass base
  • Apache 正在将文件夹重定向到同名的 .html 文件

    我正在尝试将 404 json fales 重定向到 404 json 以 作为内容 但 apache 正在将文件夹重定向到具有相同文件夹名称的 html 文件 并且任何自定义 404 json 重定向都会失败 文件结构 示例1 示例2 e
  • Python 集合与列表

    在Python中 哪种数据结构更高效 更快 假设顺序对我来说并不重要 并且无论如何我都会检查重复项 那么 Python 集比 Python 列表慢吗 这取决于您打算用它做什么 在确定某个对象是否存在于集合中时 集合的速度要快得多 如x in
  • Typescript 重写抽象方法,该方法返回 void

    abstract class Base abstract sayHello void class Child extends Base sayHello return 123 抽象方法的返回类型是void但我可以用数字类型返回来实现它 我没
  • 为什么我的 keras LSTM 模型陷入无限循环?

    我正在尝试构建一个小型 LSTM 它可以通过在现有 Python 代码上进行训练来学习编写代码 即使是垃圾代码 我已将数百个文件中的数千行代码连接到一个文件中 每个文件以