手把手教你自制编程AI:训练2小时,RNN就能写自己的代码

本文介绍如何训练一个递归神经网络(RNN),使其在2小时内学习重写C语言代码。通过Linux源代码作为训练数据,神经网络可以理解编程结构并生成类似代码。文章详细讲解了训练过程,包括数据预处理、递归神经网络的原理和实现,以及训练结果的展示。
摘要由CSDN通过智能技术生成

我们都知道,神经网络下围棋能赢柯洁、读X光照片好过医生、就连文本翻译上也快超过人类了……其实在写代码方面,神经网络也丝毫不落下风……用Linux源代码训练2小时,一个递归神经网络就能重写好它自己的代码,这是不是比程序员学得还快?

为了帮大家一窥究竟,AI100(rgznai100)编译了开发者Thibault Neveu的这篇文章,手把手教你做一个这样的神经网络。

作者 | Thibault Neveu

我认这很疯狂。开发者让神经网络学会了自己编程来重写它自己代码!好吧,咱们也试。

预备条件

  1. Tensorflow + 基本的深度学习技能

  2. 该项目的github代码库 - https://github.com/thibo73800/deep_generation/tree/master/c_code

  3. 我会在本文中快速回顾一下递归神经网络。但是,如果你对这个课题不甚了解,我相信以下两个资源能让你弄懂递归神经网络:

视频 - https://www.youtube.com/watch?v=iX5V1WpxxkY&t=2652s

文章 - http://colah.github.io/posts/2015-08-Understanding-LSTMs/

我不会在本文中详解本项目的所有环节。但我会仔细阐述其中的基本要点来让你理解整个项目。花点时间,亲手运行下文中给出的每一段代码,理解其中的逻辑。这很重要,毕竟,实践出真知。

接下来是正题,让我们开始吧!

数据库

跟其他监督训练一样,我们需要为神经网络提供一个数据集。这里我们使用C语言(如果用太简单的语言,就不好玩了)。我们直接用Linux github代码库中的c语言脚本作为训练数据。我已经把我们会用到的.c代码提取到本项目中。

代码地址-https://github.com/thibo73800/deep_generation/tree/master/c_code/dataset

首要问题:如何表示数据?

神经网络只能用于处理数字。对于其他形式的数据,它就无能为力了。因此,数据集中的每个字符都需要被翻译成这种形式(每个数字对应一个字符)。

示例:把字符转换为整数(int)

举例来说,这里用数字7表示字符“=”。为了在反向传播期间获得更好的收敛性,我们稍后会在独热编码(One-Hot Encoding)编码中表示每个数字。

# List all file in the dataset directory

all_file = os.listdir("dataset")

# Filter : Select

  • 2
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
欢迎体验AI1.0 1 ------------ 运行本软件需要JRE(java运行时)1.5.0_08以上版本。 运行方法:在program目录下,右键点击AI10.jar,选打开方式为“java platform standard edition binary”即可。 2 ------------ 界面介绍: 界面左侧是一个树(load数据后显示树结构),右侧上方是您在树上点选的节点的信息的显示与编辑区,右侧中间是命令的输入区,右侧下方是输出区。 您会发现界面上有很多按钮,其实他们都是我调试程序用的,您只需了解几个按钮即可。 File菜单的“Set default dir”是设置选择载入、导出文件的默认目录, “save as”是将树保存为文件,“load”则是将文件中保存的树装入到程序中来(会覆盖原有树的呦~~,记得先save)。 Script菜单的“save script as”是将命令区的内容存入文件,“load script”是将文件读入命令区(覆盖原有的命令)。 右侧中部的“Execute”按钮可以执行命令区的命令,可以用鼠标选择一部分命令为高亮,而只执行选择的命令。 ***注意***需要人工将右下的输出区的滚动条滚到最下!(作者在此道歉了,但作者毕竟是技艺不精啊……) 右侧中部的“CLO”是清除输出区的按钮,“—”则是在输出区加横线的按钮。 3 ------------ 功能介绍: ***注意***使用前需LOAD目录import_me下的template.dat。(或LOAD您以前保存的树,但要确认模板的存在。) 之后就可以运行各种命令了。 但是命令是有限的。 ***注意***从那张源代码截图可看出本软件支持的命令…… 还有就是import_me目录下的developing.txt是我开发时积累的命令脚本,大家可以导入玩一玩。 4 ------------ 欢迎批评与建议。 作者:cmpltrtok 电邮:cmpltrtok@sina.com 5 ------------ 命令列表: 作者还是不放心,把命令列表一下: 删除分类……。 删除……属于……。 ……是一种……不是一种……。 ……是一种……。 ……是一个……不是一个……。 ……是一个……。 ……是一种……(吗)? ……是一个……(吗)? ……是什么? ……是……吗?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值