我以前使用过神经网络,但只是为了好玩,主要是使用归一化分类(Enum)、数字和位(Bool)值。我知道NNs很难理解字符,但我想知道他们是否能理解如何转换文本。
例如,是否有可能训练NN做以下工作:
或(d改为f)
如果是,有多可靠?或者也许有更适合这份工作的东西?
发布于 2015-08-10 11:31:44
这个问题与实现无关,但由于我刚刚完成了一个类似主题的实验室,以下是一些实用技巧:
使用RNN网络以这种方式对文本进行转换是非常可能的,也是非常容易的。克隆此(https://github.com/karpathy/char-rnn)存储库,并将其训练为数据/文件夹/input.txt中的文件,其大小与您希望输出的格式相同:
abcde = abcfe
tdfg = tffg
ddhj = ffhj使用此命令训练:
th train.lua -data_dir data/folder在测试网络时,它应该能够根据您提供的种子文本生成正确的输出:
th sample.lua cv/[latest_sample] -primetext "abcd" -length 7应能生产出下列产品:
abcd = abcf发布于 2015-02-20 10:07:55
一切都取决于转换的复杂性。如果你对这些例子感兴趣,那么,当然是的,这是可行和可靠的。第二个例子是很简单的,你只是表示NN一个字符,将输入和输出编码为一个热向量(每个字符一个神经元),它将完成这项工作。第一个例子可以通过将左和右部分转换成一个热输入向量来解决,它表示两个符号的所有可能组合中的一个,并且具有两个输出,要求NN选择是否应该选择第一部分或第二部分(存在更好的编码输入的方法,特别是对于长字符串)。只要你有足够的训练例子,一切都应该正常工作。
一般来说,NNs很难处理文本的日子已经过去了。现在可以训练NNs进行机器翻译(比任何其他方法都好),甚至在某种程度上,可以训练它来预测基于程序字符串的简单计算机程序的输出(但对于NNs来说,这仍然是一项困难的任务)。
https://stackoverflow.com/questions/28611859
复制相似问题