python3.5で動作しています。
こちらの和訳ページ
を元にサンプルのコードを記述したのですが、エラーにより動作しませんでした。エラー文としてはどうやらどこかの入力にnp.nddarrayを要求されているみたいです。
error
1TypeError: numpy.ndarray or cuda.ndarray are expected. 2Actual: <class 'ellipsis'>
私の解釈が追いついていないのですがこちらの和訳ページのレイですと、次元数100のベクトルを1000こ入力にとって、時系列データとし、LSTMの入力にしているとみて良いのでしょうか?
python
1import numpy as np 2import chainer 3from chainer import cuda, Function, gradient_check, report, training, utils, Variable 4from chainer import datasets, iterators, optimizers, serializers 5from chainer import Link, Chain, ChainList 6import chainer.functions as F 7import chainer.links as L 8from chainer.training import extensions 9 10class RNN(Chain): 11 def __init__(self): 12 super(RNN, self).__init__( 13 embed=L.EmbedID(1000, 100), # word embedding 14 mid=L.LSTM(100, 50), # the first LSTM layer 15 out=L.Linear(50, 1000), # the feed-forward output layer 16 ) 17 18 def reset_state(self): 19 self.mid.reset_state() 20 21 def __call__(self, cur_word): 22 # Given the current word ID, predict the next word. 23 x = self.embed(cur_word) 24 h = self.mid(x) 25 y = self.out(h) 26 return y 27 28def compute_loss(x_list): 29 loss = 0 30 for cur_word, next_word in zip(x_list, x_list[1:]): 31 loss += model(cur_word, next_word) 32 return loss 33 34 35 36 37rnn = RNN() 38model = L.Classifier(rnn) 39optimizer = optimizers.SGD() 40optimizer.setup(model) 41 42 43x_list = [Variable(..., volatile='on') for _ in range(100)] # list of 100 words 44rnn.reset_state() 45optimizer.update(compute_loss, x_list)
回答1件
あなたの回答
tips
プレビュー