RNN(和 LSTM / GRU)可以生成可变长度的输出。例如,文本的生成。
在此类问题中,RNN 旨在生成下一个字符(它跟踪过去生成的字符)。RNN 应生成“输出结束”字符以指示序列结束。
例如:https ://chunml.github.io/ChunML.github.io/project/Creating-Text-Generator-Using-Recurrent-Neural-Network/
必须更改以下方法:
def generate_text(model, length):
ix = [np.random.randint(VOCAB_SIZE)]
y_char = [ix_to_char[ix[-1]]]
X = np.zeros((1, length, VOCAB_SIZE))
for i in range(length):
X[0, i, :][ix[-1]] = 1
print(ix_to_char[ix[-1]], end="")
ix = np.argmax(model.predict(X[:, :i+1, :])[0], 1)
y_char.append(ix_to_char[ix[-1]])
return ('').join(y_char)
到 :
stop_characters = set(['.','?'])
..
..
ix = np.argmax(model.predict(X[:, :i+1, :])[0], 1)
predicted_char=ix_to_char[ix[-1]]
if(predicted_char in stop_characters ):
break
y_char.append(predicted_char)