Skip to content

Instantly share code, notes, and snippets.

@nzw0301
Created June 5, 2016 11:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save nzw0301/4dddfd7fdd22eb61d012dc821c365381 to your computer and use it in GitHub Desktop.
Save nzw0301/4dddfd7fdd22eb61d012dc821c365381 to your computer and use it in GitHub Desktop.
Display the source blob
Display the rendered blob
Raw
{
"cells": [
{
"cell_type": "code",
"execution_count": 1,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stderr",
"output_type": "stream",
"text": [
"Using Theano backend.\n"
]
}
],
"source": [
"from keras import backend as K\n",
"from keras import initializations, activations\n",
"from keras.models import Model\n",
"from keras.layers import Dense, Embedding, LSTM, SimpleRNN, Lambda, Input, Recurrent, merge, TimeDistributed, Activation\n",
"from keras.engine import InputSpec\n",
"from keras.utils import np_utils\n",
"from keras.preprocessing import sequence\n",
"from keras.preprocessing.text import Tokenizer\n",
"from keras.callbacks import EarlyStopping\n",
"from keras.callbacks import Callback\n",
"\n",
"import numpy as np\n",
"np.random.seed(13)\n",
"\n",
"from keras.utils.visualize_util import model_to_dot, plot\n",
"from IPython.display import SVG\n",
"\n",
"from matplotlib import pyplot as plt\n",
"%matplotlib inline\n",
"plt.style.use(\"ggplot\")"
]
},
{
"cell_type": "code",
"execution_count": 2,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"def sample(p):\n",
" p /= sum(p)\n",
" return np.where(np.random.multinomial(1,p,1)==1)[1][0]"
]
},
{
"cell_type": "code",
"execution_count": 3,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class ContextRNN(Recurrent):\n",
" def __init__(self,\n",
" init='zero',\n",
" alpha=0.95,\n",
" **kwargs):\n",
" self.init = initializations.get(init)\n",
" self.alpha = alpha\n",
"\n",
" super(ContextRNN, self).__init__(**kwargs)\n",
"\n",
" def build(self, input_shape):\n",
" self.input_spec = [InputSpec(shape=input_shape)]\n",
" if self.stateful:\n",
" self.reset_states()\n",
" else:\n",
" self.states = [None]\n",
" input_dim = input_shape[2]\n",
" self.input_dim = input_dim\n",
" self.output_dim = input_dim\n",
"\n",
" def reset_states(self):\n",
" assert self.stateful, 'Layer must be stateful.'\n",
" input_shape = self.input_spec[0].shape\n",
" if not input_shape[0]:\n",
" raise Exception('If a RNN is stateful, a complete ' +\n",
" 'input_shape must be provided (including batch size).')\n",
" if hasattr(self, 'states'):\n",
" K.set_value(self.states[0],\n",
" np.zeros((input_shape[0], self.output_dim)))\n",
" else:\n",
" self.states = [K.zeros((input_shape[0], self.output_dim))]\n",
"\n",
" def step(self, x, states):\n",
" prev_output = states[0]\n",
" output = (1.-self.alpha)*x + (self.alpha)*prev_output\n",
" return output, [output]\n",
"\n",
" def get_config(self):\n",
" config = {'output_dim': self.output_dim,\n",
" 'alpha': self.alpha\n",
" }\n",
" base_config = super(ContextRNN, self).get_config()\n",
" return dict(list(base_config.items()) + list(config.items()))"
]
},
{
"cell_type": "code",
"execution_count": 4,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"path = \"mika/mika/split_mika.txt\"\n",
"doc = [\"<BOS> \" + \" \".join(list(l))+\" <EOS>\" for l in open(path).readlines()]\n",
"tokenizer = Tokenizer(filters=\"\\n\")\n",
"tokenizer.fit_on_texts(doc)\n",
"doc = tokenizer.texts_to_sequences(doc)\n",
"V = len(tokenizer.word_index)+1\n",
"maxlen = 30"
]
},
{
"cell_type": "code",
"execution_count": 5,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"(15738, 30) (15738, 634)\n"
]
}
],
"source": [
"data = []\n",
"targets = []\n",
"for sentence in doc:\n",
" for i in range(1, len(sentence)):\n",
" start = 0\n",
" if i > maxlen:\n",
" start = i - maxlen\n",
" data.append(sentence[start:i])\n",
" targets.append(sentence[i])\n",
"\n",
"Y = np_utils.to_categorical(targets, V)\n",
"X = sequence.pad_sequences(data, maxlen=maxlen)\n",
"print(X.shape, Y.shape)"
]
},
{
"cell_type": "code",
"execution_count": 6,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg height=\"701pt\" viewBox=\"0.00 0.00 653.95 701.00\" width=\"654pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 697)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-697 649.952,-697 649.952,4 -4,4\" stroke=\"none\"/>\n",
"<!-- 4381712792 -->\n",
"<g class=\"node\" id=\"node1\"><title>4381712792</title>\n",
"<polygon fill=\"none\" points=\"217.215,-648.5 217.215,-692.5 447.55,-692.5 447.55,-648.5 217.215,-648.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"266.224\" y=\"-666.3\">x (InputLayer)</text>\n",
"<polyline fill=\"none\" points=\"315.232,-648.5 315.232,-692.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"343.067\" y=\"-677.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"315.232,-670.5 370.901,-670.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"343.067\" y=\"-655.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"370.901,-648.5 370.901,-692.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"409.226\" y=\"-677.3\">(None, 30)</text>\n",
"<polyline fill=\"none\" points=\"370.901,-670.5 447.55,-670.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"409.226\" y=\"-655.3\">(None, 30)</text>\n",
"</g>\n",
"<!-- 4381712456 -->\n",
"<g class=\"node\" id=\"node2\"><title>4381712456</title>\n",
"<polygon fill=\"none\" points=\"89.8701,-567.5 89.8701,-611.5 352.895,-611.5 352.895,-567.5 89.8701,-567.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"144.724\" y=\"-585.3\">Bx (Embedding)</text>\n",
"<polyline fill=\"none\" points=\"199.577,-567.5 199.577,-611.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"227.412\" y=\"-596.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"199.577,-589.5 255.246,-589.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"227.412\" y=\"-574.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"255.246,-567.5 255.246,-611.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"304.07\" y=\"-596.3\">(None, 30)</text>\n",
"<polyline fill=\"none\" points=\"255.246,-589.5 352.895,-589.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"304.07\" y=\"-574.3\">(None, 30, 40)</text>\n",
"</g>\n",
"<!-- 4381712792&#45;&gt;4381712456 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>4381712792-&gt;4381712456</title>\n",
"<path d=\"M302.636,-648.329C289.448,-638.943 273.766,-627.782 259.713,-617.78\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"261.387,-614.676 251.21,-611.729 257.328,-620.379 261.387,-614.676\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612391712 -->\n",
"<g class=\"node\" id=\"node4\"><title>4612391712</title>\n",
"<polygon fill=\"none\" points=\"338.984,-486.5 338.984,-530.5 609.781,-530.5 609.781,-486.5 338.984,-486.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"394.224\" y=\"-504.3\">Ax (Embedding)</text>\n",
"<polyline fill=\"none\" points=\"449.463,-486.5 449.463,-530.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"477.298\" y=\"-515.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"449.463,-508.5 505.132,-508.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"477.298\" y=\"-493.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"505.132,-486.5 505.132,-530.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"557.457\" y=\"-515.3\">(None, 30)</text>\n",
"<polyline fill=\"none\" points=\"505.132,-508.5 609.781,-508.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"557.457\" y=\"-493.3\">(None, 30, 100)</text>\n",
"</g>\n",
"<!-- 4381712792&#45;&gt;4612391712 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>4381712792-&gt;4612391712</title>\n",
"<path d=\"M351.239,-648.253C376.346,-619.963 420.841,-569.828 448.913,-538.198\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"451.654,-540.382 455.674,-530.58 446.418,-535.736 451.654,-540.382\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4522436312 -->\n",
"<g class=\"node\" id=\"node3\"><title>4522436312</title>\n",
"<polygon fill=\"none\" points=\"59.6426,-486.5 59.6426,-530.5 321.122,-530.5 321.122,-486.5 59.6426,-486.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"113.724\" y=\"-504.3\">s (ContextRNN)</text>\n",
"<polyline fill=\"none\" points=\"167.805,-486.5 167.805,-530.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"195.639\" y=\"-515.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"167.805,-508.5 223.474,-508.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"195.639\" y=\"-493.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"223.474,-486.5 223.474,-530.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"272.298\" y=\"-515.3\">(None, 30, 40)</text>\n",
"<polyline fill=\"none\" points=\"223.474,-508.5 321.122,-508.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"272.298\" y=\"-493.3\">(None, 30, 40)</text>\n",
"</g>\n",
"<!-- 4381712456&#45;&gt;4522436312 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>4381712456-&gt;4522436312</title>\n",
"<path d=\"M213.075,-567.329C209.809,-559.005 205.995,-549.286 202.436,-540.217\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"205.624,-538.759 198.713,-530.729 199.107,-541.316 205.624,-538.759\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612252448 -->\n",
"<g class=\"node\" id=\"node5\"><title>4612252448</title>\n",
"<polygon fill=\"none\" points=\"152.168,-405.5 152.168,-449.5 446.597,-449.5 446.597,-405.5 152.168,-405.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"219.224\" y=\"-423.3\">Ps (TimeDistributed)</text>\n",
"<polyline fill=\"none\" points=\"286.279,-405.5 286.279,-449.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"314.114\" y=\"-434.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"286.279,-427.5 341.948,-427.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"314.114\" y=\"-412.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"341.948,-405.5 341.948,-449.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"394.272\" y=\"-434.3\">(None, 30, 40)</text>\n",
"<polyline fill=\"none\" points=\"341.948,-427.5 446.597,-427.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"394.272\" y=\"-412.3\">(None, 30, 100)</text>\n",
"</g>\n",
"<!-- 4522436312&#45;&gt;4612252448 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>4522436312-&gt;4612252448</title>\n",
"<path d=\"M219.592,-486.329C232.543,-476.943 247.943,-465.782 261.742,-455.78\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"264.049,-458.431 270.092,-449.729 259.941,-452.764 264.049,-458.431\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612252224 -->\n",
"<g class=\"node\" id=\"node8\"><title>4612252224</title>\n",
"<polygon fill=\"none\" points=\"0,-324.5 0,-368.5 248.765,-368.5 248.765,-324.5 0,-324.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"47.7236\" y=\"-342.3\">s_T (Lambda)</text>\n",
"<polyline fill=\"none\" points=\"95.4473,-324.5 95.4473,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"123.282\" y=\"-353.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"95.4473,-346.5 151.116,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"123.282\" y=\"-331.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"151.116,-324.5 151.116,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"199.94\" y=\"-353.3\">(None, 30, 40)</text>\n",
"<polyline fill=\"none\" points=\"151.116,-346.5 248.765,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"199.94\" y=\"-331.3\">(None, 40)</text>\n",
"</g>\n",
"<!-- 4522436312&#45;&gt;4612252224 -->\n",
"<g class=\"edge\" id=\"edge8\"><title>4522436312-&gt;4612252224</title>\n",
"<path d=\"M168.751,-486.36C159.563,-476.195 149.567,-463.334 143.382,-450 132.96,-427.527 128.251,-399.784 126.125,-378.83\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"129.61,-378.507 125.254,-368.849 122.637,-379.116 129.61,-378.507\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612394008 -->\n",
"<g class=\"node\" id=\"node6\"><title>4612394008</title>\n",
"<polygon fill=\"none\" points=\"266.812,-324.5 266.812,-368.5 645.952,-368.5 645.952,-324.5 266.812,-324.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"323.737\" y=\"-342.3\">merge_1 (Merge)</text>\n",
"<polyline fill=\"none\" points=\"380.662,-324.5 380.662,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"408.497\" y=\"-353.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"380.662,-346.5 436.331,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"408.497\" y=\"-331.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"436.331,-324.5 436.331,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"541.142\" y=\"-353.3\">[(None, 30, 100), (None, 30, 100)]</text>\n",
"<polyline fill=\"none\" points=\"436.331,-346.5 645.952,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"540.655\" y=\"-331.3\">(None, 30, 100)</text>\n",
"</g>\n",
"<!-- 4612391712&#45;&gt;4612394008 -->\n",
"<g class=\"edge\" id=\"edge5\"><title>4612391712-&gt;4612394008</title>\n",
"<path d=\"M471.992,-486.253C468.89,-458.683 463.454,-410.363 459.886,-378.646\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"463.35,-378.126 458.754,-368.58 456.394,-378.908 463.35,-378.126\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612252448&#45;&gt;4612394008 -->\n",
"<g class=\"edge\" id=\"edge6\"><title>4612252448-&gt;4612394008</title>\n",
"<path d=\"M341.455,-405.329C361.157,-395.416 384.791,-383.523 405.491,-373.108\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"407.106,-376.213 414.466,-368.592 403.959,-369.96 407.106,-376.213\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612447032 -->\n",
"<g class=\"node\" id=\"node7\"><title>4612447032</title>\n",
"<polygon fill=\"none\" points=\"305.698,-243.5 305.698,-287.5 571.067,-287.5 571.067,-243.5 305.698,-243.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"358.224\" y=\"-261.3\">h (SimpleRNN)</text>\n",
"<polyline fill=\"none\" points=\"410.75,-243.5 410.75,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"438.584\" y=\"-272.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"410.75,-265.5 466.418,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"438.584\" y=\"-250.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"466.418,-243.5 466.418,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"518.743\" y=\"-272.3\">(None, 30, 100)</text>\n",
"<polyline fill=\"none\" points=\"466.418,-265.5 571.067,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"518.743\" y=\"-250.3\">(None, 100)</text>\n",
"</g>\n",
"<!-- 4612394008&#45;&gt;4612447032 -->\n",
"<g class=\"edge\" id=\"edge7\"><title>4612394008-&gt;4612447032</title>\n",
"<path d=\"M451.559,-324.329C449.682,-316.094 447.495,-306.493 445.447,-297.507\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"448.853,-296.702 443.219,-287.729 442.028,-298.257 448.853,-296.702\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612447984 -->\n",
"<g class=\"node\" id=\"node10\"><title>4612447984</title>\n",
"<polygon fill=\"none\" points=\"281.88,-162.5 281.88,-206.5 530.884,-206.5 530.884,-162.5 281.88,-162.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"336.724\" y=\"-180.3\">dense_2 (Dense)</text>\n",
"<polyline fill=\"none\" points=\"391.567,-162.5 391.567,-206.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"419.401\" y=\"-191.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"391.567,-184.5 447.236,-184.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"419.401\" y=\"-169.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"447.236,-162.5 447.236,-206.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"489.06\" y=\"-191.3\">(None, 100)</text>\n",
"<polyline fill=\"none\" points=\"447.236,-184.5 530.884,-184.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"489.06\" y=\"-169.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4612447032&#45;&gt;4612447984 -->\n",
"<g class=\"edge\" id=\"edge10\"><title>4612447032-&gt;4612447984</title>\n",
"<path d=\"M429.807,-243.329C426.435,-235.005 422.498,-225.286 418.825,-216.217\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"421.98,-214.683 414.981,-206.729 415.492,-217.312 421.98,-214.683\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612391096 -->\n",
"<g class=\"node\" id=\"node9\"><title>4612391096</title>\n",
"<polygon fill=\"none\" points=\"51.0391,-243.5 51.0391,-287.5 269.726,-287.5 269.726,-243.5 51.0391,-243.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"90.7236\" y=\"-261.3\">Vs (Dense)</text>\n",
"<polyline fill=\"none\" points=\"130.408,-243.5 130.408,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"158.243\" y=\"-272.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"130.408,-265.5 186.077,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"158.243\" y=\"-250.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"186.077,-243.5 186.077,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"227.901\" y=\"-272.3\">(None, 40)</text>\n",
"<polyline fill=\"none\" points=\"186.077,-265.5 269.726,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"227.901\" y=\"-250.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4612252224&#45;&gt;4612391096 -->\n",
"<g class=\"edge\" id=\"edge9\"><title>4612252224-&gt;4612391096</title>\n",
"<path d=\"M134.03,-324.329C137.863,-315.917 142.346,-306.079 146.516,-296.928\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"149.746,-298.28 150.708,-287.729 143.377,-295.377 149.746,-298.28\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4610578864 -->\n",
"<g class=\"node\" id=\"node11\"><title>4610578864</title>\n",
"<polygon fill=\"none\" points=\"145.812,-81.5 145.812,-125.5 482.952,-125.5 482.952,-81.5 145.812,-81.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"202.737\" y=\"-99.3\">merge_2 (Merge)</text>\n",
"<polyline fill=\"none\" points=\"259.662,-81.5 259.662,-125.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"287.497\" y=\"-110.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"259.662,-103.5 315.331,-103.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"287.497\" y=\"-88.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"315.331,-81.5 315.331,-125.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"399.142\" y=\"-110.3\">[(None, 634), (None, 634)]</text>\n",
"<polyline fill=\"none\" points=\"315.331,-103.5 482.952,-103.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"398.655\" y=\"-88.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4612391096&#45;&gt;4610578864 -->\n",
"<g class=\"edge\" id=\"edge12\"><title>4612391096-&gt;4610578864</title>\n",
"<path d=\"M180.832,-243.253C208.177,-214.844 256.726,-164.403 287.147,-132.797\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"289.68,-135.212 294.093,-125.58 284.637,-130.358 289.68,-135.212\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4612447984&#45;&gt;4610578864 -->\n",
"<g class=\"edge\" id=\"edge11\"><title>4612447984-&gt;4610578864</title>\n",
"<path d=\"M381.728,-162.329C371.003,-153.12 358.289,-142.202 346.813,-132.348\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"348.972,-129.588 339.105,-125.729 344.411,-134.899 348.972,-129.588\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4613133256 -->\n",
"<g class=\"node\" id=\"node12\"><title>4613133256</title>\n",
"<polygon fill=\"none\" points=\"197.263,-0.5 197.263,-44.5 431.501,-44.5 431.501,-0.5 197.263,-0.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"244.724\" y=\"-18.3\">y (Activation)</text>\n",
"<polyline fill=\"none\" points=\"292.184,-0.5 292.184,-44.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"320.019\" y=\"-29.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"292.184,-22.5 347.853,-22.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"320.019\" y=\"-7.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"347.853,-0.5 347.853,-44.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"389.677\" y=\"-29.3\">(None, 634)</text>\n",
"<polyline fill=\"none\" points=\"347.853,-22.5 431.501,-22.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"389.677\" y=\"-7.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4610578864&#45;&gt;4613133256 -->\n",
"<g class=\"edge\" id=\"edge13\"><title>4610578864-&gt;4613133256</title>\n",
"<path d=\"M314.382,-81.3294C314.382,-73.1826 314.382,-63.6991 314.382,-54.7971\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"317.882,-54.729 314.382,-44.729 310.882,-54.729 317.882,-54.729\" stroke=\"black\"/>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 6,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"def get_RNN_last(x):\n",
" return x[:,-1,:]\n",
"\n",
"def get_RNN_last_shape(input_shape):\n",
" assert len(input_shape) == 3\n",
" return (None, input_shape[-1])\n",
"\n",
"nb_hidden = 100\n",
"nb_context = 40\n",
"m = 100\n",
"w = Input(shape=(maxlen,), dtype='int32', name='x')\n",
"\n",
"#slow\n",
"b = Embedding(output_dim=nb_context, input_dim=V, input_length=maxlen, name='Bx')(w)\n",
"s = ContextRNN(return_sequences=True, name=\"s\")(b)\n",
"ps = TimeDistributed(Dense(m), name=\"Ps\")(s)\n",
"\n",
"s = Lambda(lambda x: get_RNN_last(x), output_shape=get_RNN_last_shape, name=\"s_T\")(s)\n",
"v = Dense(V, name=\"Vs\")(s)\n",
"\n",
"# fast\n",
"x = Embedding(output_dim=m, input_dim=V, input_length=maxlen, name='Ax')(w)\n",
"x = merge([x, ps], mode='sum')\n",
"\n",
"x = SimpleRNN(nb_hidden, activation=\"sigmoid\", return_sequences=False, name=\"h\")(x)\n",
"x = Dense(V)(x)\n",
"x = merge([x,v], mode='sum')\n",
"y = Activation(\"softmax\", name='y')(x)\n",
"\n",
"model = Model(input=w, output=y)\n",
"\n",
"SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))"
]
},
{
"cell_type": "code",
"execution_count": 7,
"metadata": {
"collapsed": false
},
"outputs": [],
"source": [
"class Show(Callback):\n",
" def on_epoch_end(self, epoch, logs={}):\n",
" in_words = \"<bos> プ\"\n",
" for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = sample(model.predict(in_sequence)[0])\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
" print(\"\\n\", in_words.replace(\" \", \"\"), \"\\n\")\n",
"\n",
"early_stopping = EarlyStopping(monitor='val_loss', patience=3)\n",
"show = Show()\n",
"\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer='adadelta',\n",
" metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 8,
"metadata": {
"collapsed": false,
"scrolled": true
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 14164 samples, validate on 1574 samples\n",
"Epoch 1/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 5.0634 - acc: 0.0526\n",
" <bos>プと束衣し嘉美か<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 5.0629 - acc: 0.0526 - val_loss: 4.8776 - val_acc: 0.0432\n",
"Epoch 2/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.8524 - acc: 0.0655\n",
" <bos>プキいょよ<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 4.8525 - acc: 0.0656 - val_loss: 4.8382 - val_acc: 0.0502\n",
"Epoch 3/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.7545 - acc: 0.0858\n",
" <bos>プンッだ本?★<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 4.7544 - acc: 0.0858 - val_loss: 4.7241 - val_acc: 0.0775\n",
"Epoch 4/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.6026 - acc: 0.0957\n",
" <bos>プ今話、さシだサみんるかやてし。<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 4.6028 - acc: 0.0957 - val_loss: 4.5834 - val_acc: 0.0940\n",
"Epoch 5/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.4562 - acc: 0.1333\n",
" <bos>プ横ューちしくねーテっサな★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 4.4556 - acc: 0.1334 - val_loss: 4.4346 - val_acc: 0.1537\n",
"Epoch 6/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.3065 - acc: 0.1779\n",
" <bos>プたデューかま。<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 4.3061 - acc: 0.1779 - val_loss: 4.2820 - val_acc: 0.1823\n",
"Epoch 7/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.1820 - acc: 0.1941\n",
" <bos>プたトそも、にもーも日♪へなー?<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 4.1814 - acc: 0.1942 - val_loss: 4.1851 - val_acc: 0.1938\n",
"Epoch 8/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.0935 - acc: 0.2031\n",
" <bos>プロデューサーの地よーるしとサんなー★<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 4.0933 - acc: 0.2030 - val_loss: 4.1195 - val_acc: 0.1963\n",
"Epoch 9/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.0296 - acc: 0.2077\n",
" <bos>プロデュいに、、アロガってうなの夜おだよか手ポ!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 4.0299 - acc: 0.2077 - val_loss: 4.0813 - val_acc: 0.2084\n",
"Epoch 10/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.9786 - acc: 0.2163\n",
" <bos>プロデュかっと一っかいってるし!<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.9783 - acc: 0.2163 - val_loss: 4.0348 - val_acc: 0.2103\n",
"Epoch 11/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.9332 - acc: 0.2175\n",
" <bos>プロデアタシオなーのねっちゃー!<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.9321 - acc: 0.2175 - val_loss: 4.0042 - val_acc: 0.2147\n",
"Epoch 12/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8870 - acc: 0.2250\n",
" <bos>プタシ、もへル慮じゃト撮しくこ~<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.8887 - acc: 0.2247 - val_loss: 3.9720 - val_acc: 0.2160\n",
"Epoch 13/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8466 - acc: 0.2349\n",
" <bos>プロデューに…こ!<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.8477 - acc: 0.2348 - val_loss: 3.9426 - val_acc: 0.2198\n",
"Epoch 14/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8056 - acc: 0.2417\n",
" <bos>プロデューサー、アタドげたんい火も大イアらねいよと。<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.8068 - acc: 0.2416 - val_loss: 3.9125 - val_acc: 0.2294\n",
"Epoch 15/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.7683 - acc: 0.2464\n",
" <bos>プロデューサー、遊うかクテしれツうきね!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.7676 - acc: 0.2465 - val_loss: 3.8861 - val_acc: 0.2313\n",
"Epoch 16/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.7284 - acc: 0.2533\n",
" <bos>プっサーで毛んってあ楽っさもよ、だっかど…<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.7278 - acc: 0.2533 - val_loss: 3.8590 - val_acc: 0.2446\n",
"Epoch 17/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6891 - acc: 0.2598\n",
" <bos>プロデューサー、!<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.6897 - acc: 0.2596 - val_loss: 3.8367 - val_acc: 0.2421\n",
"Epoch 18/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6521 - acc: 0.2625\n",
" <bos>プロデューサー、登古ッ刺り腕個ち?<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.6518 - acc: 0.2625 - val_loss: 3.8043 - val_acc: 0.2484\n",
"Epoch 19/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6151 - acc: 0.2678\n",
" <bos>プロデューサーアタシのあま?<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.6151 - acc: 0.2678 - val_loss: 3.7737 - val_acc: 0.2471\n",
"Epoch 20/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5808 - acc: 0.2733\n",
" <bos>プロデューサー、今年にい!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.5813 - acc: 0.2732 - val_loss: 3.7523 - val_acc: 0.2573\n",
"Epoch 21/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5481 - acc: 0.2786\n",
" <bos>プロデューサー~、届箱は何えってみとン肩けくななせだよョ★<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.5483 - acc: 0.2786 - val_loss: 3.7327 - val_acc: 0.2579\n",
"Epoch 22/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5172 - acc: 0.2836\n",
" <bos>プロデューサー、おメル、こにで…も帰ーのネー★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.5173 - acc: 0.2835 - val_loss: 3.7047 - val_acc: 0.2592\n",
"Epoch 23/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4885 - acc: 0.2899\n",
" <bos>プロデューサー、感うたいからど?<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.4877 - acc: 0.2900 - val_loss: 3.6912 - val_acc: 0.2598\n",
"Epoch 24/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4584 - acc: 0.2937\n",
" <bos>プロはそう、ダ日デューサー、も申勝き★<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.4587 - acc: 0.2937 - val_loss: 3.6731 - val_acc: 0.2624\n",
"Epoch 25/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4315 - acc: 0.2974\n",
" <bos>プロデューサー、本近気し、かなっちゃんだ。<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.4321 - acc: 0.2972 - val_loss: 3.6619 - val_acc: 0.2618\n",
"Epoch 26/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4063 - acc: 0.3015\n",
" <bos>プロデューサーを送ー、この、まいないなだけどね★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.4060 - acc: 0.3016 - val_loss: 3.6379 - val_acc: 0.2694\n",
"Epoch 27/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3805 - acc: 0.3049\n",
" <bos>プーサーとおへよー!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.3800 - acc: 0.3049 - val_loss: 3.6293 - val_acc: 0.2751\n",
"Epoch 28/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3549 - acc: 0.3092\n",
" <bos>プロデューサー、何よね★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.3554 - acc: 0.3090 - val_loss: 3.6156 - val_acc: 0.2783\n",
"Epoch 29/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3340 - acc: 0.3095\n",
" <bos>プロデューサールはどれえ来ら的★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.3334 - acc: 0.3097 - val_loss: 3.5954 - val_acc: 0.2821\n",
"Epoch 30/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3116 - acc: 0.3149\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.3113 - acc: 0.3150 - val_loss: 3.5858 - val_acc: 0.2814\n",
"Epoch 31/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2897 - acc: 0.3174\n",
" <bos>プロデューサー、ナきせてあいいちゃってっ★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.2889 - acc: 0.3175 - val_loss: 3.5780 - val_acc: 0.2840\n",
"Epoch 32/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2681 - acc: 0.3214\n",
" <bos>プロデューサー、こってこてそれを物し!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.2674 - acc: 0.3215 - val_loss: 3.5649 - val_acc: 0.2872\n",
"Epoch 33/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2478 - acc: 0.3244\n",
" <bos>プロデューサートたの乗してくれ、なって★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.2471 - acc: 0.3246 - val_loss: 3.5533 - val_acc: 0.2884\n",
"Epoch 34/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2281 - acc: 0.3273\n",
" <bos>プロしとプレーテーバージもく、莉嘉すと?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.2278 - acc: 0.3272 - val_loss: 3.5397 - val_acc: 0.2916\n",
"Epoch 35/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2087 - acc: 0.3290\n",
" <bos>プロデューサーだ?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.2087 - acc: 0.3289 - val_loss: 3.5362 - val_acc: 0.2891\n",
"Epoch 36/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1901 - acc: 0.3302\n",
" <bos>プロデューサー…これま!<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 3.1903 - acc: 0.3301 - val_loss: 3.5264 - val_acc: 0.2922\n",
"Epoch 37/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1729 - acc: 0.3317\n",
" <bos>プロデューサー、お仕装の静だからこのま?<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 3.1729 - acc: 0.3318 - val_loss: 3.5140 - val_acc: 0.2929\n",
"Epoch 38/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1550 - acc: 0.3366\n",
" <bos>プロデューサーにずプロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 12s - loss: 3.1550 - acc: 0.3366 - val_loss: 3.5116 - val_acc: 0.2954\n",
"Epoch 39/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1375 - acc: 0.3378\n",
" <bos>プロデューサー、一緒にアタシの楽しだってーう!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.1386 - acc: 0.3376 - val_loss: 3.5033 - val_acc: 0.2967\n",
"Epoch 40/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1217 - acc: 0.3390\n",
" <bos>プロデューサー、上のまデューサーのも焼いのゃうかなー…しょ?<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 3.1216 - acc: 0.3387 - val_loss: 3.4894 - val_acc: 0.2986\n",
"Epoch 41/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1066 - acc: 0.3423\n",
" <bos>プロデューサー、一年がデューサー<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.1062 - acc: 0.3421 - val_loss: 3.4837 - val_acc: 0.2980\n",
"Epoch 42/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0914 - acc: 0.3442\n",
" <bos>プロデューサー、プロデューサーのツるドルー<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 3.0911 - acc: 0.3443 - val_loss: 3.4884 - val_acc: 0.2942\n",
"Epoch 43/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0763 - acc: 0.3445\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 3.0765 - acc: 0.3443 - val_loss: 3.4665 - val_acc: 0.3037\n",
"Epoch 44/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0621 - acc: 0.3465\n",
" <bos>プロデューサ~るはくらーコサー図に過出じゃなけならね?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.0621 - acc: 0.3466 - val_loss: 3.4679 - val_acc: 0.3018\n",
"Epoch 45/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0484 - acc: 0.3473\n",
" <bos>プロデューサー、これなもんし。<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.0478 - acc: 0.3474 - val_loss: 3.4666 - val_acc: 0.2967\n",
"Epoch 46/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0335 - acc: 0.3523\n",
" <bos>プロデューサーの気ジまなびもこ、莉嘉にやっとサうね♪<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.0334 - acc: 0.3522 - val_loss: 3.4579 - val_acc: 0.3043\n",
"Epoch 47/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0197 - acc: 0.3531\n",
" <bos>プロデューサー…プロデューサー、プロデューサーの面激にイタシき \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.0194 - acc: 0.3531 - val_loss: 3.4489 - val_acc: 0.3030\n",
"Epoch 48/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0074 - acc: 0.3542\n",
" <bos>プロデューサーよ!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 3.0070 - acc: 0.3542 - val_loss: 3.4442 - val_acc: 0.3005\n",
"Epoch 49/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9931 - acc: 0.3578\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 2.9932 - acc: 0.3578 - val_loss: 3.4410 - val_acc: 0.3050\n",
"Epoch 50/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9807 - acc: 0.3592\n",
" <bos>プロデューサーの見えと感みたいかなんだか?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9808 - acc: 0.3591 - val_loss: 3.4290 - val_acc: 0.3056\n",
"Epoch 51/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9669 - acc: 0.3610\n",
" <bos>プロデューサー、だろね!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9680 - acc: 0.3608 - val_loss: 3.4233 - val_acc: 0.3075\n",
"Epoch 52/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9550 - acc: 0.3638\n",
" <bos>プロデューサー、子でそのアタシもあかなぁ元に楽してるんな★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9557 - acc: 0.3636 - val_loss: 3.4254 - val_acc: 0.3043\n",
"Epoch 53/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9434 - acc: 0.3626\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9434 - acc: 0.3625 - val_loss: 3.4259 - val_acc: 0.3069\n",
"Epoch 54/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9306 - acc: 0.3672\n",
" <bos>プロデューサーとおわれてんてれてるけてるろも…上嘉ないからねら \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9309 - acc: 0.3671 - val_loss: 3.4164 - val_acc: 0.3139\n",
"Epoch 55/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9179 - acc: 0.3661\n",
" <bos>プロデューサー、然勝してよう…アタシの頃だってけ様げから~!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9185 - acc: 0.3659 - val_loss: 3.4145 - val_acc: 0.3088\n",
"Epoch 56/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9062 - acc: 0.3703\n",
" <bos>プロデューサーが束くろたからもからケなんから、最着ェメンス先な \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.9065 - acc: 0.3704 - val_loss: 3.4203 - val_acc: 0.3119\n",
"Epoch 57/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8936 - acc: 0.3723\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8944 - acc: 0.3721 - val_loss: 3.4043 - val_acc: 0.3107\n",
"Epoch 58/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8832 - acc: 0.3741\n",
" <bos>プロデューサー、プロデューサーの?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8826 - acc: 0.3742 - val_loss: 3.4021 - val_acc: 0.3126\n",
"Epoch 59/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8719 - acc: 0.3768\n",
" <bos>プロデューサー、liveでサーくしいけば夜で見るよ★<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8720 - acc: 0.3767 - val_loss: 3.3931 - val_acc: 0.3119\n",
"Epoch 60/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8611 - acc: 0.3769\n",
" <bos>プロデューサー、ファーかもいらも、莉嘉だよ…ね<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8607 - acc: 0.3769 - val_loss: 3.3921 - val_acc: 0.3170\n",
"Epoch 61/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8501 - acc: 0.3775\n",
" <bos>プロデューサーくちてしてアゲがそれーよ!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8498 - acc: 0.3774 - val_loss: 3.3874 - val_acc: 0.3132\n",
"Epoch 62/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8390 - acc: 0.3832\n",
" <bos>プロデューサーとね!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8384 - acc: 0.3832 - val_loss: 3.3911 - val_acc: 0.3170\n",
"Epoch 63/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8287 - acc: 0.3845\n",
" <bos>プロデューサー、いっと今日か仕事ししいてもこいなね<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8275 - acc: 0.3848 - val_loss: 3.3792 - val_acc: 0.3158\n",
"Epoch 64/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8163 - acc: 0.3863\n",
" <bos>プロデューサーっ、そうサーと楽しいたいけど!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.8153 - acc: 0.3865 - val_loss: 3.3835 - val_acc: 0.3151\n",
"Epoch 65/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8062 - acc: 0.3885\n",
" <bos>プロデューサートでしかり…きるじゃいまななんだ.?<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 2.8057 - acc: 0.3885 - val_loss: 3.3806 - val_acc: 0.3202\n",
"Epoch 66/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7958 - acc: 0.3906\n",
" <bos>プロデューサー、アタシのlive~っん~かなィ<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7955 - acc: 0.3906 - val_loss: 3.3810 - val_acc: 0.3170\n",
"Epoch 67/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7845 - acc: 0.3951\n",
" <bos>プロデューサーもプロデューサーみくれるよ!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7850 - acc: 0.3948 - val_loss: 3.3748 - val_acc: 0.3145\n",
"Epoch 68/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7737 - acc: 0.3954\n",
" <bos>プロンぞー、今日の?<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 2.7740 - acc: 0.3953 - val_loss: 3.3582 - val_acc: 0.3202\n",
"Epoch 69/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7644 - acc: 0.3970\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7644 - acc: 0.3971 - val_loss: 3.3720 - val_acc: 0.3189\n",
"Epoch 70/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7546 - acc: 0.3978\n",
" <bos>プロデューサー、この一緒にキレきが食たかアマも♪<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7544 - acc: 0.3978 - val_loss: 3.3667 - val_acc: 0.3158\n",
"Epoch 71/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7445 - acc: 0.4027\n",
" <bos>プロデューサー様!<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7447 - acc: 0.4024 - val_loss: 3.3634 - val_acc: 0.3208\n",
"Epoch 72/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7343 - acc: 0.4024\n",
" <bos>プロデューサーのチテイバー?<eos> \n",
"\n",
"14164/14164 [==============================] - 11s - loss: 2.7342 - acc: 0.4025 - val_loss: 3.3596 - val_acc: 0.3240\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x11609f1d0>"
]
},
"execution_count": 8,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X, Y, batch_size=32, nb_epoch=100, validation_split=0.1, callbacks=[early_stopping, show], verbose=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## random sampling"
]
},
{
"cell_type": "code",
"execution_count": 9,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 ありから、へへ?\n",
"1 今日は陽付けたくアタシたとおないっこり頑張るとてね!\n",
"2 じゃ楽もことこのかられるまださーん★\n",
"3 それが理る!\n",
"4 おっちゃっそよいやっ★\n",
"5 ピクショッチシ慢よ\n",
"6 だっていなー?\n",
"7 まんな止アらいこのまだイうしかって\n",
"8 へへ、なら、自標、食身?\n",
"9 おプロデューサーの真キッスがーんだ!\n",
"10 プロデューサー、楽しくないからさっくくれかないね\n",
"11 イァンと\n",
"12 じゃんてプレドコ露布なくよ。\n",
"13 どんよっとちょーこ!\n",
"14 えへへ、プレゼンとさーの思ー!\n",
"15 ありあ~ん★\n",
"16 レッスにはさうわっ♪\n",
"17 プロデューサーこが、きるのかれたの★\n",
"18 遊・はか理どんっちが何分してくるってー★\n",
"19 なんね、近り登えて一緒にオトも本ぁ\n",
"20 ふふ!\n",
"21 へへへ、プロデューサー、一緒でスもスつなくないじゃん。\n",
"22 くの然社も最欲!\n",
"23 ダー、今日はもぅ更そんかげるて一緒に撮ついじゃん。\n",
"24 アタシのみとかのべ我以が性までレッチ\n",
"25 プロデューサーのレッスンるせて莉嘉は、寒いから莉嘉っ★\n",
"26 なんか、プロデューサー、いこのコピクトは時ャはビoえてくれる\n",
"27 みんかなアイドルいつけそう★\n",
"28 してイァリでョントからプロデューサーからプロデューサー★\n",
"29 こんからくれた目運顔るようなう、何だ宝~?\n"
]
}
],
"source": [
"for i in range(30):\n",
" in_words = \"<bos> \"\n",
" for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = sample(model.predict(in_sequence)[0])\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
"\n",
" print(i, in_words.replace(\" \", \"\").replace(\"<eos>\", \"\")[5:])"
]
},
{
"cell_type": "code",
"execution_count": 10,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 プロデューサューサー、それてきこがせるよー★\n",
"1 プロデューサー、プロデューサー、ノラ楽勝だよー…\n",
"2 プロデューサーとくれらっちゃんこもイロせてるでも自。\n",
"3 プレゼンカリルに来場けどん!\n",
"4 プロデューサーとねー♪\n",
"5 プロデューサー★\n",
"6 プロデューサーのおどこーい……ヘ、プロデューサー、一緒じゃねー\n",
"7 プロデューサー、同~んかげかい、頑張ふっね\n",
"8 プロデューサーのアタシはそうかテンをトはオカルなに出してづでも\n",
"9 プレゼントはねー、プロデューサー、こらちがてればぞー★\n",
"10 プロデューサー先が莉嘉ってば!\n",
"11 プロデューサーかなきにしくよん!\n",
"12 プロデューサー!\n",
"13 プロデューサーも、さんな食か感じせてへ!\n",
"14 プロデューサー★\n",
"15 プロデューサーのプロデューサー?\n",
"16 プロデューサーのはカッチべはー?\n",
"17 プロデューサーのパ絶…プロデューサーにバールも衣ーみー\n",
"18 プロデューサー!\n",
"19 プロデューサー!\n",
"20 プロデューサーのしと気っていくかいからーんてじゃう。\n",
"21 プレゼン投もこに楽しいない?\n",
"22 プロデューサー、アタシ、歌えるとはそ!\n",
"23 プロデューサー。\n",
"24 プロデューサーとねぇ、アタシとソざないとつしょ\n",
"25 プロデューサーがバープはデューサーの莉嘉のー★\n",
"26 プロデューサー、スびだよー、うんね\n",
"27 プロデューサー、いつ…あー?\n",
"28 プロデューサー、見る楽しいけばそう?\n",
"29 プロデューサー!\n"
]
}
],
"source": [
"for i in range(30):\n",
" in_words = \"<bos> プ\"\n",
" for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = sample(model.predict(in_sequence)[0])\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
"\n",
"\n",
" print(i, in_words.replace(\" \", \"\").replace(\"<eos>\", \"\")[5:])"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## 最尤推定"
]
},
{
"cell_type": "code",
"execution_count": 11,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"ねぇ、プロデューサー、アタシのこと、アタシのことはどうよ!<eos>\n"
]
}
],
"source": [
"in_words = \"<bos> ね\"\n",
"for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = np.argmax(model.predict(in_sequence)[0])\n",
"\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
"\n",
"print(in_words.replace(\" \", \"\").replace(\"<bos>\", \"\"))"
]
},
{
"cell_type": "code",
"execution_count": 12,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"プロデューサー、アタシのことはどうよ!<eos>\n"
]
}
],
"source": [
"in_words = \"<bos> プ\"\n",
"for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = np.argmax(model.predict(in_sequence)[0])\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
"\n",
"print(in_words.replace(\" \", \"\").replace(\"<bos>\", \"\"))"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"# SimpleRNN"
]
},
{
"cell_type": "code",
"execution_count": 17,
"metadata": {
"collapsed": false
},
"outputs": [
{
"data": {
"image/svg+xml": [
"<svg height=\"377pt\" viewBox=\"0.00 0.00 278.80 377.00\" width=\"279pt\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g class=\"graph\" id=\"graph0\" transform=\"scale(1 1) rotate(0) translate(4 373)\">\n",
"<title>G</title>\n",
"<polygon fill=\"white\" points=\"-4,4 -4,-373 274.797,-373 274.797,4 -4,4\" stroke=\"none\"/>\n",
"<!-- 4698871344 -->\n",
"<g class=\"node\" id=\"node1\"><title>4698871344</title>\n",
"<polygon fill=\"none\" points=\"20.231,-324.5 20.231,-368.5 250.566,-368.5 250.566,-324.5 20.231,-324.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"69.2397\" y=\"-342.3\">x (InputLayer)</text>\n",
"<polyline fill=\"none\" points=\"118.249,-324.5 118.249,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"146.083\" y=\"-353.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"118.249,-346.5 173.917,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"146.083\" y=\"-331.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"173.917,-324.5 173.917,-368.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"212.242\" y=\"-353.3\">(None, 30)</text>\n",
"<polyline fill=\"none\" points=\"173.917,-346.5 250.566,-346.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"212.242\" y=\"-331.3\">(None, 30)</text>\n",
"</g>\n",
"<!-- 4698873528 -->\n",
"<g class=\"node\" id=\"node2\"><title>4698873528</title>\n",
"<polygon fill=\"none\" points=\"0,-243.5 0,-287.5 270.797,-287.5 270.797,-243.5 0,-243.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"55.2397\" y=\"-261.3\">Ax (Embedding)</text>\n",
"<polyline fill=\"none\" points=\"110.479,-243.5 110.479,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"138.314\" y=\"-272.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"110.479,-265.5 166.148,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"138.314\" y=\"-250.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"166.148,-243.5 166.148,-287.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"218.473\" y=\"-272.3\">(None, 30)</text>\n",
"<polyline fill=\"none\" points=\"166.148,-265.5 270.797,-265.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"218.473\" y=\"-250.3\">(None, 30, 100)</text>\n",
"</g>\n",
"<!-- 4698871344&#45;&gt;4698873528 -->\n",
"<g class=\"edge\" id=\"edge1\"><title>4698871344-&gt;4698873528</title>\n",
"<path d=\"M135.398,-324.329C135.398,-316.183 135.398,-306.699 135.398,-297.797\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"138.899,-297.729 135.398,-287.729 131.899,-297.729 138.899,-297.729\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4698871400 -->\n",
"<g class=\"node\" id=\"node3\"><title>4698871400</title>\n",
"<polygon fill=\"none\" points=\"2.71387,-162.5 2.71387,-206.5 268.083,-206.5 268.083,-162.5 2.71387,-162.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"55.2397\" y=\"-180.3\">h (SimpleRNN)</text>\n",
"<polyline fill=\"none\" points=\"107.766,-162.5 107.766,-206.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"135.6\" y=\"-191.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"107.766,-184.5 163.435,-184.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"135.6\" y=\"-169.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"163.435,-162.5 163.435,-206.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"215.759\" y=\"-191.3\">(None, 30, 100)</text>\n",
"<polyline fill=\"none\" points=\"163.435,-184.5 268.083,-184.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"215.759\" y=\"-169.3\">(None, 100)</text>\n",
"</g>\n",
"<!-- 4698873528&#45;&gt;4698871400 -->\n",
"<g class=\"edge\" id=\"edge2\"><title>4698873528-&gt;4698871400</title>\n",
"<path d=\"M135.398,-243.329C135.398,-235.183 135.398,-225.699 135.398,-216.797\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"138.899,-216.729 135.398,-206.729 131.899,-216.729 138.899,-216.729\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4698786000 -->\n",
"<g class=\"node\" id=\"node4\"><title>4698786000</title>\n",
"<polygon fill=\"none\" points=\"10.8965,-81.5 10.8965,-125.5 259.9,-125.5 259.9,-81.5 10.8965,-81.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"65.7397\" y=\"-99.3\">dense_4 (Dense)</text>\n",
"<polyline fill=\"none\" points=\"120.583,-81.5 120.583,-125.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"148.417\" y=\"-110.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"120.583,-103.5 176.252,-103.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"148.417\" y=\"-88.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"176.252,-81.5 176.252,-125.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"218.076\" y=\"-110.3\">(None, 100)</text>\n",
"<polyline fill=\"none\" points=\"176.252,-103.5 259.9,-103.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"218.076\" y=\"-88.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4698871400&#45;&gt;4698786000 -->\n",
"<g class=\"edge\" id=\"edge3\"><title>4698871400-&gt;4698786000</title>\n",
"<path d=\"M135.398,-162.329C135.398,-154.183 135.398,-144.699 135.398,-135.797\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"138.899,-135.729 135.398,-125.729 131.899,-135.729 138.899,-135.729\" stroke=\"black\"/>\n",
"</g>\n",
"<!-- 4678440440 -->\n",
"<g class=\"node\" id=\"node5\"><title>4678440440</title>\n",
"<polygon fill=\"none\" points=\"18.2793,-0.5 18.2793,-44.5 252.518,-44.5 252.518,-0.5 18.2793,-0.5\" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"65.7397\" y=\"-18.3\">y (Activation)</text>\n",
"<polyline fill=\"none\" points=\"113.2,-0.5 113.2,-44.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"141.035\" y=\"-29.3\">input:</text>\n",
"<polyline fill=\"none\" points=\"113.2,-22.5 168.869,-22.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"141.035\" y=\"-7.3\">output:</text>\n",
"<polyline fill=\"none\" points=\"168.869,-0.5 168.869,-44.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"210.693\" y=\"-29.3\">(None, 634)</text>\n",
"<polyline fill=\"none\" points=\"168.869,-22.5 252.518,-22.5 \" stroke=\"black\"/>\n",
"<text font-family=\"Times,serif\" font-size=\"14.00\" text-anchor=\"middle\" x=\"210.693\" y=\"-7.3\">(None, 634)</text>\n",
"</g>\n",
"<!-- 4698786000&#45;&gt;4678440440 -->\n",
"<g class=\"edge\" id=\"edge4\"><title>4698786000-&gt;4678440440</title>\n",
"<path d=\"M135.398,-81.3294C135.398,-73.1826 135.398,-63.6991 135.398,-54.7971\" fill=\"none\" stroke=\"black\"/>\n",
"<polygon fill=\"black\" points=\"138.899,-54.729 135.398,-44.729 131.899,-54.729 138.899,-54.729\" stroke=\"black\"/>\n",
"</g>\n",
"</g>\n",
"</svg>"
],
"text/plain": [
"<IPython.core.display.SVG object>"
]
},
"execution_count": 17,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"nb_hidden = 100\n",
"m = 100\n",
"w = Input(shape=(maxlen,), dtype='int32', name='x')\n",
"\n",
"x = Embedding(output_dim=m, input_dim=V, input_length=maxlen, name='Ax')(w)\n",
"\n",
"x = SimpleRNN(nb_hidden, activation=\"sigmoid\", return_sequences=False, name=\"h\")(x)\n",
"x = Dense(V)(x)\n",
"y = Activation(\"softmax\", name='y')(x)\n",
"\n",
"model = Model(input=w, output=y)\n",
"\n",
"SVG(model_to_dot(model, show_shapes=True).create(prog='dot', format='svg'))"
]
},
{
"cell_type": "code",
"execution_count": 18,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": [
"early_stopping = EarlyStopping(monitor='val_loss', patience=3)\n",
"show = Show()\n",
"\n",
"model.compile(loss='categorical_crossentropy',\n",
" optimizer='adadelta',\n",
" metrics=['accuracy'])"
]
},
{
"cell_type": "code",
"execution_count": 19,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Train on 14164 samples, validate on 1574 samples\n",
"Epoch 1/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 5.0720 - acc: 0.0572\n",
" <bos>プであ力へんプ厳、デ過るね気信ーク自<eos> \n",
"\n",
"14164/14164 [==============================] - 10s - loss: 5.0716 - acc: 0.0573 - val_loss: 4.8882 - val_acc: 0.0432\n",
"Epoch 2/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.8634 - acc: 0.0609\n",
" <bos>プさっ緒<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.8633 - acc: 0.0609 - val_loss: 4.8627 - val_acc: 0.0432\n",
"Epoch 3/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.7939 - acc: 0.0629\n",
" <bos>プと<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 4.7930 - acc: 0.0631 - val_loss: 4.7616 - val_acc: 0.0451\n",
"Epoch 4/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.6413 - acc: 0.0971\n",
" <bos>プゼしプれ、スj…しかてねしーューたて待び近ッのしし自たまはが \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.6406 - acc: 0.0974 - val_loss: 4.5984 - val_acc: 0.1105\n",
"Epoch 5/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.4830 - acc: 0.1334\n",
" <bos>プキな?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.4834 - acc: 0.1334 - val_loss: 4.4387 - val_acc: 0.1703\n",
"Epoch 6/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.3329 - acc: 0.1771\n",
" <bos>プが行ー、コな務負様ね瞬ね!<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 4.3325 - acc: 0.1774 - val_loss: 4.2924 - val_acc: 0.1830\n",
"Epoch 7/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.2085 - acc: 0.1980\n",
" <bos>プバへうけり全デの楽ンなっゃなはが料標るあを気!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.2077 - acc: 0.1981 - val_loss: 4.1889 - val_acc: 0.1976\n",
"Epoch 8/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.1157 - acc: 0.2033\n",
" <bos>プロち線、カiえ★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.1158 - acc: 0.2031 - val_loss: 4.1262 - val_acc: 0.1995\n",
"Epoch 9/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 4.0463 - acc: 0.2096\n",
" <bos>プロい!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 4.0471 - acc: 0.2095 - val_loss: 4.0706 - val_acc: 0.2084\n",
"Epoch 10/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.9910 - acc: 0.2201\n",
" <bos>プロデューすービpトみなアてのこいんまメかイれ評いてく、ゲ。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.9911 - acc: 0.2201 - val_loss: 4.0296 - val_acc: 0.2071\n",
"Epoch 11/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.9412 - acc: 0.2274\n",
" <bos>プロデューサー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.9400 - acc: 0.2275 - val_loss: 3.9894 - val_acc: 0.2160\n",
"Epoch 12/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8899 - acc: 0.2297\n",
" <bos>プロデューッ判頑だ、なンッベダアタシそい、い?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.8904 - acc: 0.2295 - val_loss: 3.9542 - val_acc: 0.2255\n",
"Epoch 13/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8436 - acc: 0.2342\n",
" <bos>プロがューサー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.8440 - acc: 0.2343 - val_loss: 3.9205 - val_acc: 0.2262\n",
"Epoch 14/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.8000 - acc: 0.2372\n",
" <bos>プロデューサーね、いいとゃだ、誰とはもこい、こう可、こんたった \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.8005 - acc: 0.2374 - val_loss: 3.8878 - val_acc: 0.2325\n",
"Epoch 15/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.7593 - acc: 0.2441\n",
" <bos>プロデューサー♪<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.7592 - acc: 0.2441 - val_loss: 3.8596 - val_acc: 0.2313\n",
"Epoch 16/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.7216 - acc: 0.2492\n",
" <bos>プロデュー、もッジプロデューサなって<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.7201 - acc: 0.2495 - val_loss: 3.8273 - val_acc: 0.2382\n",
"Epoch 17/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6823 - acc: 0.2557\n",
" <bos>プロデューサー★<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.6825 - acc: 0.2556 - val_loss: 3.7976 - val_acc: 0.2440\n",
"Epoch 18/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6477 - acc: 0.2653\n",
" <bos>プッリー、アタシに…vに大服<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.6474 - acc: 0.2652 - val_loss: 3.7743 - val_acc: 0.2529\n",
"Epoch 19/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.6123 - acc: 0.2746\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.6129 - acc: 0.2746 - val_loss: 3.7467 - val_acc: 0.2490\n",
"Epoch 20/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5805 - acc: 0.2785\n",
" <bos>プって焼1じゃけね!<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.5800 - acc: 0.2787 - val_loss: 3.7208 - val_acc: 0.2611\n",
"Epoch 21/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5476 - acc: 0.2851\n",
" <bos>プロデていかよー★<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.5483 - acc: 0.2848 - val_loss: 3.7065 - val_acc: 0.2586\n",
"Epoch 22/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.5168 - acc: 0.2885\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.5177 - acc: 0.2885 - val_loss: 3.6852 - val_acc: 0.2630\n",
"Epoch 23/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4886 - acc: 0.2937\n",
" <bos>プロデューサーくのぶでっぱこへっ、アタシのケ…露そくとダ眠いな \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.4882 - acc: 0.2938 - val_loss: 3.6599 - val_acc: 0.2732\n",
"Epoch 24/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4598 - acc: 0.2979\n",
" <bos>プロデューサっぱあ合はろるつを朝飛こちゃうから趣ンマせも時ート \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.4609 - acc: 0.2977 - val_loss: 3.6429 - val_acc: 0.2732\n",
"Epoch 25/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4329 - acc: 0.3022\n",
" <bos>プロデューサーよね?<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.4341 - acc: 0.3021 - val_loss: 3.6214 - val_acc: 0.2776\n",
"Epoch 26/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.4089 - acc: 0.3078\n",
" <bos>プロデューサーっ★<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.4092 - acc: 0.3078 - val_loss: 3.6109 - val_acc: 0.2834\n",
"Epoch 27/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3847 - acc: 0.3117\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.3848 - acc: 0.3116 - val_loss: 3.5887 - val_acc: 0.2903\n",
"Epoch 28/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3627 - acc: 0.3132\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.3629 - acc: 0.3132 - val_loss: 3.5744 - val_acc: 0.2903\n",
"Epoch 29/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3402 - acc: 0.3145\n",
" <bos>プロデューサートiアってならももこにしとしょー♪<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.3408 - acc: 0.3143 - val_loss: 3.5636 - val_acc: 0.2897\n",
"Epoch 30/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.3184 - acc: 0.3181\n",
" <bos>プロデューサーで、レラネゼ?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.3195 - acc: 0.3179 - val_loss: 3.5523 - val_acc: 0.2903\n",
"Epoch 31/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2997 - acc: 0.3214\n",
" <bos>プロデューサーのプレルじゃな<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.2992 - acc: 0.3217 - val_loss: 3.5416 - val_acc: 0.2910\n",
"Epoch 32/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2811 - acc: 0.3219\n",
" <bos>プロデューサー、こっとでえる?<eos> \n",
"\n",
"14164/14164 [==============================] - 9s - loss: 3.2797 - acc: 0.3220 - val_loss: 3.5321 - val_acc: 0.2935\n",
"Epoch 33/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2613 - acc: 0.3254\n",
" <bos>プロデューサーにアタシの現った、なたいにスラなからと実ラうなの \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.2609 - acc: 0.3253 - val_loss: 3.5181 - val_acc: 0.2973\n",
"Epoch 34/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2425 - acc: 0.3263\n",
" <bos>プロデューサーのアタシの…しょにするの気k<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.2422 - acc: 0.3262 - val_loss: 3.5133 - val_acc: 0.2942\n",
"Epoch 35/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2257 - acc: 0.3282\n",
" <bos>プロデューサール、今日にサーイすもどー、らいでもいっくよ~<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.2252 - acc: 0.3284 - val_loss: 3.4990 - val_acc: 0.2973\n",
"Epoch 36/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.2079 - acc: 0.3319\n",
" <bos>プロデューサー、バタシくて…じゃら超気はバッゼンル?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.2080 - acc: 0.3319 - val_loss: 3.4914 - val_acc: 0.2992\n",
"Epoch 37/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1915 - acc: 0.3329\n",
" <bos>プロデューサー、魔ってどー?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1916 - acc: 0.3329 - val_loss: 3.4830 - val_acc: 0.3011\n",
"Epoch 38/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1760 - acc: 0.3374\n",
" <bos>プロデューサー、ごカッコドがキっぱdって!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1755 - acc: 0.3375 - val_loss: 3.4755 - val_acc: 0.3005\n",
"Epoch 39/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1589 - acc: 0.3402\n",
" <bos>プロデューサーのマドドになっしんてきるよ<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1590 - acc: 0.3402 - val_loss: 3.4609 - val_acc: 0.3030\n",
"Epoch 40/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1435 - acc: 0.3407\n",
" <bos>プロデューサー、プロデューサー、ちしよ……、へへ、緊年にアタシ \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1439 - acc: 0.3407 - val_loss: 3.4608 - val_acc: 0.2999\n",
"Epoch 41/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1292 - acc: 0.3435\n",
" <bos>プロデューサー…だ!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1288 - acc: 0.3437 - val_loss: 3.4537 - val_acc: 0.3043\n",
"Epoch 42/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1143 - acc: 0.3435\n",
" <bos>プロデューのイク発みたおこと★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.1139 - acc: 0.3435 - val_loss: 3.4338 - val_acc: 0.3037\n",
"Epoch 43/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.1003 - acc: 0.3469\n",
" <bos>プロデューサート♪<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0997 - acc: 0.3471 - val_loss: 3.4379 - val_acc: 0.3024\n",
"Epoch 44/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0866 - acc: 0.3478\n",
" <bos>プロデューサーだし…がくれー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0862 - acc: 0.3479 - val_loss: 3.4303 - val_acc: 0.3050\n",
"Epoch 45/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0737 - acc: 0.3484\n",
" <bos>プロデューサー…からプロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0725 - acc: 0.3486 - val_loss: 3.4244 - val_acc: 0.3062\n",
"Epoch 46/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0593 - acc: 0.3520\n",
" <bos>プロデューサーりだんだけどね★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0590 - acc: 0.3520 - val_loss: 3.4186 - val_acc: 0.3069\n",
"Epoch 47/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0467 - acc: 0.3546\n",
" <bos>プロデューサー、今年のアタシのlじゃまも来バーだねね。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0466 - acc: 0.3546 - val_loss: 3.4141 - val_acc: 0.3088\n",
"Epoch 48/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0325 - acc: 0.3549\n",
" <bos>プロデューサーとかよー♪<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0334 - acc: 0.3551 - val_loss: 3.4075 - val_acc: 0.3100\n",
"Epoch 49/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0211 - acc: 0.3580\n",
" <bos>プロデューサーの!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0212 - acc: 0.3578 - val_loss: 3.4068 - val_acc: 0.3100\n",
"Epoch 50/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 3.0097 - acc: 0.3597\n",
" <bos>プレゼンプロデューサーのえ、一緒だま…今日の超莉嘉!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 3.0086 - acc: 0.3598 - val_loss: 3.3994 - val_acc: 0.3132\n",
"Epoch 51/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9951 - acc: 0.3604\n",
" <bos>プロデじかい★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9968 - acc: 0.3601 - val_loss: 3.3968 - val_acc: 0.3100\n",
"Epoch 52/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9845 - acc: 0.3659\n",
" <bos>プロデューサー、まい?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9847 - acc: 0.3659 - val_loss: 3.3926 - val_acc: 0.3132\n",
"Epoch 53/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9735 - acc: 0.3666\n",
" <bos>プロデューサーっ。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9734 - acc: 0.3668 - val_loss: 3.3890 - val_acc: 0.3119\n",
"Epoch 54/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9614 - acc: 0.3681\n",
" <bos>プロデューとから!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9616 - acc: 0.3683 - val_loss: 3.3849 - val_acc: 0.3132\n",
"Epoch 55/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9502 - acc: 0.3719\n",
" <bos>プロデューサーだ!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9502 - acc: 0.3716 - val_loss: 3.3880 - val_acc: 0.3113\n",
"Epoch 56/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9408 - acc: 0.3720\n",
" <bos>プロデューサー、メンジしいいっ★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9393 - acc: 0.3724 - val_loss: 3.3800 - val_acc: 0.3107\n",
"Epoch 57/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9277 - acc: 0.3751\n",
" <bos>プロデューサーとプロデューサーは、もったんだも。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9285 - acc: 0.3748 - val_loss: 3.3687 - val_acc: 0.3158\n",
"Epoch 58/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9181 - acc: 0.3745\n",
" <bos>プロデューサーよー!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9185 - acc: 0.3745 - val_loss: 3.3676 - val_acc: 0.3145\n",
"Epoch 59/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.9065 - acc: 0.3775\n",
" <bos>プロデューサー★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.9068 - acc: 0.3775 - val_loss: 3.3641 - val_acc: 0.3164\n",
"Epoch 60/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8962 - acc: 0.3797\n",
" <bos>プロデューサー、アタシのキラキっていね<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8964 - acc: 0.3795 - val_loss: 3.3630 - val_acc: 0.3189\n",
"Epoch 61/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8861 - acc: 0.3812\n",
" <bos>プロがかなう?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8864 - acc: 0.3811 - val_loss: 3.3604 - val_acc: 0.3208\n",
"Epoch 62/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8767 - acc: 0.3815\n",
" <bos>プロデューサー?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8759 - acc: 0.3816 - val_loss: 3.3618 - val_acc: 0.3202\n",
"Epoch 63/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8666 - acc: 0.3845\n",
" <bos>プロデューサートもっとよねポー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8661 - acc: 0.3846 - val_loss: 3.3514 - val_acc: 0.3196\n",
"Epoch 64/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8557 - acc: 0.3855\n",
" <bos>プロデューサーに朝っついてもき?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8559 - acc: 0.3855 - val_loss: 3.3409 - val_acc: 0.3215\n",
"Epoch 65/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8470 - acc: 0.3869\n",
" <bos>プロデューサー!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8466 - acc: 0.3868 - val_loss: 3.3526 - val_acc: 0.3189\n",
"Epoch 66/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8362 - acc: 0.3883\n",
" <bos>プロデューサーだね★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8362 - acc: 0.3882 - val_loss: 3.3516 - val_acc: 0.3234\n",
"Epoch 67/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8265 - acc: 0.3908\n",
" <bos>プロデューサーたちがお疲れ人・激けまか見ても待いよ。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8267 - acc: 0.3907 - val_loss: 3.3369 - val_acc: 0.3285\n",
"Epoch 68/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8173 - acc: 0.3922\n",
" <bos>プロデューサー、ハイピーだしくなーっ★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8172 - acc: 0.3921 - val_loss: 3.3356 - val_acc: 0.3259\n",
"Epoch 69/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.8063 - acc: 0.3932\n",
" <bos>プレゼント・いてよ…ちょーね★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.8075 - acc: 0.3931 - val_loss: 3.3357 - val_acc: 0.3266\n",
"Epoch 70/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7965 - acc: 0.3940\n",
" <bos>プロデューサっととけるってよ<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7980 - acc: 0.3938 - val_loss: 3.3290 - val_acc: 0.3285\n",
"Epoch 71/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7888 - acc: 0.3961\n",
" <bos>プロデューサービチンもい、すってきばやるよ?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7886 - acc: 0.3961 - val_loss: 3.3316 - val_acc: 0.3247\n",
"Epoch 72/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7789 - acc: 0.3985\n",
" <bos>プロデューサー、にいつかメッタはほって~!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7792 - acc: 0.3983 - val_loss: 3.3268 - val_acc: 0.3297\n",
"Epoch 73/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7706 - acc: 0.4007\n",
" <bos>プロデューサー<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7705 - acc: 0.4005 - val_loss: 3.3256 - val_acc: 0.3266\n",
"Epoch 74/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7623 - acc: 0.4013\n",
" <bos>プロデューサーでー★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7618 - acc: 0.4011 - val_loss: 3.3255 - val_acc: 0.3291\n",
"Epoch 75/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7513 - acc: 0.4037\n",
" <bos>プロデューサーが優<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7525 - acc: 0.4036 - val_loss: 3.3214 - val_acc: 0.3316\n",
"Epoch 76/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7429 - acc: 0.4049\n",
" <bos>プロデューサー、コロデューサーとプロデューサーいて★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7435 - acc: 0.4046 - val_loss: 3.3188 - val_acc: 0.3278\n",
"Epoch 77/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7326 - acc: 0.4064\n",
" <bos>プロデューサー?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7344 - acc: 0.4062 - val_loss: 3.3174 - val_acc: 0.3304\n",
"Epoch 78/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7259 - acc: 0.4066\n",
" <bos>プローサー<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7255 - acc: 0.4068 - val_loss: 3.3194 - val_acc: 0.3266\n",
"Epoch 79/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7187 - acc: 0.4077\n",
" <bos>プロデューサーも…ちゃお疲れじゃう♪<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7172 - acc: 0.4080 - val_loss: 3.3165 - val_acc: 0.3291\n",
"Epoch 80/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.7078 - acc: 0.4103\n",
" <bos>プロデューサー…どうんだ、プロデューサーと?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7081 - acc: 0.4102 - val_loss: 3.3144 - val_acc: 0.3316\n",
"Epoch 81/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6998 - acc: 0.4123\n",
" <bos>プロデューサーがみていっォ!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.7002 - acc: 0.4123 - val_loss: 3.3128 - val_acc: 0.3316\n",
"Epoch 82/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6886 - acc: 0.4151\n",
" <bos>プロデューサー、プロデューサーだし★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6910 - acc: 0.4149 - val_loss: 3.3053 - val_acc: 0.3355\n",
"Epoch 83/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6827 - acc: 0.4164\n",
" <bos>プロデューサービも、莉嘉とまでもダメーね!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6826 - acc: 0.4163 - val_loss: 3.3093 - val_acc: 0.3323\n",
"Epoch 84/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6754 - acc: 0.4175\n",
" <bos>プロデューサー、あっちゃたい。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6750 - acc: 0.4175 - val_loss: 3.3111 - val_acc: 0.3323\n",
"Epoch 85/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6659 - acc: 0.4183\n",
" <bos>プロデューサーイ楽しくよりかなったらなー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6672 - acc: 0.4182 - val_loss: 3.3008 - val_acc: 0.3329\n",
"Epoch 86/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6580 - acc: 0.4206\n",
" <bos>プロデューサー、アタシイレー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6577 - acc: 0.4206 - val_loss: 3.2964 - val_acc: 0.3367\n",
"Epoch 87/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6507 - acc: 0.4207\n",
" <bos>プロデューサー?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6502 - acc: 0.4204 - val_loss: 3.2951 - val_acc: 0.3335\n",
"Epoch 88/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6419 - acc: 0.4214\n",
" <bos>プロデューサーもけれなー…しょ増…!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6417 - acc: 0.4214 - val_loss: 3.2985 - val_acc: 0.3348\n",
"Epoch 89/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6346 - acc: 0.4228\n",
" <bos>プロデューサー、期待たらくプロるかな!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6340 - acc: 0.4228 - val_loss: 3.2977 - val_acc: 0.3316\n",
"Epoch 90/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6257 - acc: 0.4250\n",
" <bos>プロデューサー★<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6267 - acc: 0.4249 - val_loss: 3.2955 - val_acc: 0.3304\n",
"Epoch 91/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6178 - acc: 0.4251\n",
" <bos>プロデューサー、んてみょ?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6182 - acc: 0.4250 - val_loss: 3.2894 - val_acc: 0.3335\n",
"Epoch 92/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6112 - acc: 0.4265\n",
" <bos>プロデューサーも、クァッキー宛だしね!<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6111 - acc: 0.4266 - val_loss: 3.2838 - val_acc: 0.3335\n",
"Epoch 93/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.6025 - acc: 0.4267\n",
" <bos>プロデューサー…莉嘉このメイケるまだし?<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.6032 - acc: 0.4266 - val_loss: 3.2894 - val_acc: 0.3329\n",
"Epoch 94/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.5953 - acc: 0.4278\n",
" <bos>プロデューサー、プロデューサー、みんなき…だってー。<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.5955 - acc: 0.4279 - val_loss: 3.2908 - val_acc: 0.3304\n",
"Epoch 95/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.5881 - acc: 0.4306\n",
" <bos>プロデューサー<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.5875 - acc: 0.4306 - val_loss: 3.2991 - val_acc: 0.3316\n",
"Epoch 96/100\n",
"14144/14164 [============================>.] - ETA: 0s - loss: 2.5794 - acc: 0.4328\n",
" <bos>プロデューサー、一緒なも莉嘉でもー♪<eos> \n",
"\n",
"14164/14164 [==============================] - 8s - loss: 2.5807 - acc: 0.4327 - val_loss: 3.2979 - val_acc: 0.3323\n"
]
},
{
"data": {
"text/plain": [
"<keras.callbacks.History at 0x11972c240>"
]
},
"execution_count": 19,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"model.fit(X, Y, batch_size=32, nb_epoch=100, validation_split=0.1, callbacks=[early_stopping, show], verbose=1)"
]
},
{
"cell_type": "markdown",
"metadata": {},
"source": [
"## random sampling "
]
},
{
"cell_type": "code",
"execution_count": 20,
"metadata": {
"collapsed": false
},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"0 嘉っ★\n",
"1 信静なに莉嘉に、…おかれた進\n",
"2 夫朝そうそっそうね♪\n",
"3 バレ嫌かいら★\n",
"4 ロりと運ラキラャラパっで、仕事られまできるならないから!\n",
"5 莉嘉に島せなくよね★\n",
"6 アタシ、するしらね\n",
"7 やっぱ、…まって、どった?\n",
"8 それが運信ならめいし!\n",
"9 アレもられたのじゃん。\n",
"10 レッスンジして?\n",
"11 …さ、勝にコラするサードューサー、つきそまなカンも、どうん!\n",
"12 今もお疲れたらもって莉嘉のモスなっちゃお人から超ずラルだっと\n",
"13 最?\n",
"14 今日はもわいご~っしょ★\n",
"15 やるのアタシのメー差したじゃ…!\n",
"16 莉嘉のえょ★\n",
"17 今日のショッジャってるって、すっと莉嘉★\n",
"18 あげならバラキラしてきゃんと妹たいでよ\n",
"19 今年はどー…あーん!\n",
"20 ブまだからのさには神社もアタシた~★\n",
"21 ?\n",
"22 超くれたり強いだよ。\n",
"23 こーはデ嘉になー?\n",
"24 んだまだけどんだって、莉嘉に伝ないにもヤイルー!\n",
"25 頑張ーっ★\n",
"26 磨くれるまだこと見て陽るなら…なにもう?\n",
"27 プロデューサーがン!\n",
"28 プロデューサーでもん♪\n",
"29 女ーイ!\n"
]
}
],
"source": [
"for i in range(30):\n",
" in_words = \"<bos> \"\n",
" for _ in range(maxlen):\n",
" in_sequence = sequence.pad_sequences(tokenizer.texts_to_sequences([in_words]), maxlen=maxlen)\n",
" wordid = sample(model.predict(in_sequence)[0])\n",
" for k, v in tokenizer.word_index.items():\n",
" if v == wordid:\n",
" in_words += \" \" + k\n",
" break\n",
" if k == \"<eos>\":\n",
" break\n",
"\n",
"\n",
" print(i, in_words.replace(\" \", \"\").replace(\"<eos>\", \"\")[5:])"
]
},
{
"cell_type": "code",
"execution_count": null,
"metadata": {
"collapsed": true
},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.5.1"
},
"toc": {
"toc_cell": false,
"toc_number_sections": true,
"toc_threshold": 6,
"toc_window_display": false
}
},
"nbformat": 4,
"nbformat_minor": 0
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment