2017-01-09 104 views
0

我写了一首歌TensorFlow基于这个视频,我看了一个简单的循环网络的恒定值:通过使网络产生https://youtu.be/vq2nnJ4g6N0?t=8546NLP回归神经网络总给人

在视频RNN被证明产生莎士比亚戏剧单词一次一个字。网络的输出在下一次迭代中反馈回输入。

这里是我的网络图:

+--------------------------------+ 
|        | 
| In: H E L L O W O R L <--+-----+ 
|   | | | | | | | | | | |  | 
|   V V V V V V V V V V |  | Recursive feed 
|   +-----------------+ |  | 
+-> Hin ->| RNN + Softmax |-> Hout | 
      +-----------------+   | 
      | | | | | | | | | |   | 
    Out: V V V V V V V V V V   | 
      E L L O W O R L D ---------+ 
          ^Character predicted by the network 

我希望在网络上至少做正确的复制位。不幸的是我的网络总是输出32个字符(ASCII空格字符)。我不知道是什么原因引起的问题...

请帮我让我的网络制作诗歌!

我的代码是在这里: https://github.com/calebh/namepoet/blob/03f112ced94c3319055fbcc74a2acdb4a9b0d41c/main.py

语料库可以通过Lorem存有几段更换,以加快培训(网络具有相同的不良行为)。

+0

不是一个合适的问题就这样问,但好的图顺便说一句。 – alvas

+0

您输入到RNN是一个热点编码矢量吗?通常输入是一个嵌入的字符,而不是一个单独的向量。 – Aaron

回答

0

听起来像它可能会使滤波器饱和(如果激活函数是在光谱的最远端,并因此具有非常低的梯度并且卡住)。你可能想尝试用不同的方法初始化你的神经元参数。

另外,您是否有使用GRU的特殊原因?根据我的经验,如果效率稍差,LSTM设备更可靠。

0

我想尝试运行的代码更长的时间?你有batch_size = 10,sequence_size = 30和20次迭代,你的网络本质上总共有6000个字符,可能学习率为0.001,这远远不够你的初始化。

因此,我会尝试将学习率提高到非常高的值(例如1或100),并查看它是否开始输出不同的字母以确认您的实现是否正确。以这样高的学习率训练的网络通常不会准确。