当前位置: 首页 > 科技观察

使用tf.keras和eagerexecution解决复杂问题的一招_0

时间:2023-03-14 10:04:21 科技观察

生成模型和顺序模型一直让我着迷:它们提出的问题与我们刚接触机器学习时通常遇到的问题不同。当我刚开始学习ML时,像许多人一样,我学习了分类和回归。这些帮助我们提出和回答以下问题:图片中的这是一只猫还是一只狗?(分类)明天下雨的概率是多少?(回归)用于实际问题。但是,我们可能会问其他类型的问题,这些问题与前面的问题大不相同。你会写诗吗?(文本生成)你能生成一张猫的图片吗?(生成对抗网络)你能翻译句子吗?(神经机器翻译)你能从图片中生成字幕吗?(图片注释)暑期实习期间,我使用TensorFlow的两个best-in-classAPI(tf.keras和eagerexecution)开发了这些例子,以下是分享内容。希望你们发现它们有用且有趣!Eagerexecution是一个由run定义的命令式接口,一旦从Python调用它的动作就会立即执行。这使得开始使用TensorFlow变得更加容易,并使开发更加直观。tf.keras是用于定义类乐高模型的高级API。我使用模型子类化实现了这些示例,它允许我们通过子类化tf.keras模型并定义我们自己的前向传递来构建完全可定制的模型。当启用急切执行时,模型子类化特别有用,因为前向传递可以命令式编写。如果您还不知道这些API,可以通过tensorflow.org/tutorials上的笔记本了解更多信息,其中包含最近更新的示例。以下每个示例都是端到端的,并遵循类似的模式:自动下载训练数据。预处理训练数据并创建用于输入管道的tf.data数据集。使用tf.keras模型子类化API定义模型。通过急切的执行来训练模型。演示如何使用经过训练的模型。示例#1:文本生成第一个示例是文本生成,我们使用RNN生成类似莎士比亚的文本。您可以通过下面的链接在Colaboratory上运行它(或从GitHub下载它作为Jupyternotebook)。该代码在笔记本中有详细说明。示例1笔记本:https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/text_generation.ipynb鉴于莎士比亚有很多作品,此示例学习生成类似于莎士比亚风格的文本:在对莎士比亚选集进行30次训练后由笔记本生成的示例文本。虽然大多数句子没有意义(因为简单模型没有学习语言的含义),但令人印象深刻的是,大多数单词都拼写正确,并且它生成的脚本结构看起来与原始脚本的结构相似脚本。(这是一个基于字符的模型,我们没有训练很长时间-但它已经设法从头开始学习这两种东西)。您可以随时通过更改一行代码来更改数据集。)如果你想了解更多关于RNN的知识,可以阅读AndrejKarpathy的优秀文章——《The Unreasonable Effectiveness of Recurrent Neural Networks》。如果您想了解有关使用Keras或tfKeras实现RNN的更多信息,我们推荐FrancoisChollet的笔记本。FrancoisChollet的笔记本:https://github.com/fchollet/deep-learning-with-python-notebooks示例#2:DCGAN在此示例中,我们使用DCGAN生成手写数字。生成对抗网络(GAN)由生成器和鉴别器组成。生成器的工作是生成逼真的图像来欺骗鉴别器。鉴别器的工作是对真实图像和假图像(由生成器生成)进行分类。下面看到的输出是在使用《Unsupervised Representation Learning with Deep Convolutional Generative Adversarial Networks》中描述的网络架构和超参数训练生成器和鉴别器150个时期后产生的。示例2notebook:https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/dcgan.ipynb在150个epochs中每10个epochs生成一个GIF图像一次。您可以在笔记本中找到生成此GIF的代码。示例#3:注意力神经网络机器翻译此示例训练一个模型,将西班牙语句子翻译成英语句子。模型训练好后,可以输入西班牙语,比如“?todaviaestanencasa?”,返回英文翻译:“areyoustillathome?”下图是attentionmap。它显示输入句子的哪些部分在翻译时引起了模型的注意。例如,当模型翻译单词“cold”时,它正在查看“mucho”、“frio”、“aqui”。我们使用tf.keras和eagerexecution从头开始??实施BahdanauAttention,在笔记本中有详细解释。您还可以使用此实现作为实现自定义模型的基础。示例3笔记本:https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/nmt_with_attention/nmt_with_attention.ipynb上面翻译的注意力图。示例#4:注意图像注释在这个示例中,我们训练一个模型来预测图像的说明。我们还生成了一个注意力图,显示模型在生成字幕时关注图像的哪些部分。例如,当模型预测“冲浪板”这个词时,它会关注图片中冲浪板的附近。我们使用笔记本自动下载的MS-COCO数据集的一个子集来训练模型。示例4笔记本:https://colab.research.google.com/github/tensorflow/tensorflow/blob/master/tensorflow/contrib/eager/python/examples/generative_examples/image_captioning_with_attention.ipynb图像的预测字幕。上图中每个单词的注意力图。原文链接:https://medium.com/tensorflow/complete-code-examples-for-machine-translation-with-attention-image-captioning-text-generation-51663d07a63d【本文为专栏组织《机器》原创心》文章,微信公众号《机器心(id:almosthuman2014)》】点此查看该作者更多好文