質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

Q&A

解決済

1回答

254閲覧

LSTMでの文章作成

zwei50333456

総合スコア14

Python 3.x

Python 3はPythonプログラミング言語の最新バージョンであり、2008年12月3日にリリースされました。

0グッド

0クリップ

投稿2018/07/07 12:17

LSTMを使用して文章作成しようと思っています。
以下のコードを実行すると、下のエラー文が表示されます。
エラーの内容を調べてみたのですがよく分からなかったので質問させてください

python

1from keras.models import Sequential 2from keras.layers import Dense, Activation, Dropout 3from keras.layers import LSTM 4from keras.optimizers import RMSprop 5from keras.utils.data_utils import get_file 6import numpy as np 7import random, sys 8 9path = "./tomizawa.txt" 10bindata = open(path, "rb").read() 11text = bindata.decode("utf-8") 12print('コーパスの長さ:', len(text)) 13 14# 一文字ずつバラバラにして文字にIDを振る 15chars = sorted(list(set(text))) 16print('使われている文字の数:', len(chars)) 17char_indices = dict((c, i) for i, c in enumerate(chars)) # 文字→ID 18indices_char = dict((i, c) for i, c in enumerate(chars)) # ID→文字 19 20# テキストをmaxlen文字で区切って、その文の次に来る文字を記録する 21maxlen = 20 22step = 3 23sentences = [] 24next_chars = [] 25for i in range(0, len(text) - maxlen, step): 26 sentences.append(text[i: i + maxlen]) 27 next_chars.append(text[i + maxlen]) 28print('学習する文の数:', len(sentences)) 29 30print('テキストをIDベクトルにします...') 31X = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool) 32y = np.zeros((len(sentences), len(chars)), dtype=np.bool) 33for i, sentence in enumerate(sentences): 34 for t, char in enumerate(sentence): 35 X[i, t, char_indices[char]] = 1 36 y[i, char_indices[next_chars[i]]] = 1 37 38 39# モデルを構築する(LSTM) 40print('モデルを構築します...') 41model = Sequential() 42model.add(LSTM(128, input_shape=(maxlen, len(chars)))) 43model.add(Dense(len(chars))) 44model.add(Activation('softmax')) 45 46optimizer = RMSprop(lr=0.01) 47model.compile(loss='categorical_crossentropy', optimizer=optimizer) 48 49# 選択候補となる配列から値を取り出す 50def sample(preds, temperature=1.0): 51 preds = np.asarray(preds).astype('float64') 52 preds = np.log(preds) / temperature 53 exp_preds = np.exp(preds) 54 preds = exp_preds / np.sum(exp_preds) 55 probas = np.random.multinomial(1, preds, 1) 56 return np.argmax(probas) 57 58# 学習させて、テキストを生成する・・・を繰り返す 59for iteration in range(1, 60): 60 print() 61 print('-' * 50) 62 print('繰り返し=', iteration) 63 model.fit(X, y, batch_size=128, nb_epoch=1) # 訓練 64 # ランダムにテキストのシードを選ぶ 65 start_index = random.randint(0, len(text) - maxlen - 1) 66 # 多様性のパラメータごとに文を生成する 67 for diversity in [0.2, 0.5, 1.0, 1.2]: 68 print() 69 print('---多様性=', diversity) 70 generated = '' 71 sentence = text[start_index: start_index + maxlen] 72 generated += sentence 73 print('---シード="' + sentence + '"') 74 sys.stdout.write(generated) 75 # シードを元にテキストを自動で生成する 76 for i in range(400): 77 x = np.zeros((1, maxlen, len(chars))) 78 for t, char in enumerate(sentence): 79 x[0, t, char_indices[char]] = 1. 80 # 次に来る文字を予測 81 preds = model.predict(x, verbose=0)[0] 82 next_index = sample(preds, diversity) 83 next_char = indices_char[next_index] 84 # 既存の文に予測した一文字を足す 85 generated += next_char 86 sentence = sentence[1:] + next_char 87 sys.stdout.write(next_char) 88 sys.stdout.flush() 89 print() 90 91 92 93

エラー文

python

1コーパスの長さ: 796 2使われている文字の数: 172 3学習する文の数: 259 4テキストをIDベクトルにします... 5モデルを構築します... 6TypeError: Expected int32, got list containing Tensors of type '_Message' instead.

tomizawa.txtの内容

30円のお返しです。ありがとうございましたー! いらっしゃいませこんにちはー!いらっしゃいませこんにちはー!いらっしゃいませこんにちはー! こちらでお召し上がりですか? ソルトレイクの方で… テイクアウト。 お客さん(笑)。踏んでますよ。 ビッグバーガーを千個? 今からお作りしますんで、5時間少々よろしいですか? 千個ってなったら厨房担当者が… セット? セットをおひとつ? お飲み物はどうなさいますか? バナナシェイクで…。サイズの方、S・M・A・L・Lがございますけれども。 はい。 おっきいコップがまだ来てないんで。 すいません。 はい。 えー、ご一緒にビッグバーガーセットはいかがですか? サイドメニュー?ご一緒に(※ポテトの発音で)ホタテはいかがですか? ご一緒に~!ホタテはいかがですか? おふたつ? 以上で? それでは、厨房の方を振り返ります。 注文の方、繰り返します。 ビッグバーガーセットがおひとつ。お飲み物バナナシェイクでよろしかったですか? はい。 あ、すいません。 はい。 はい。お飲み物、バナーナシェイクで… あ。ですか~?の方ですか~? ビッグセットワン。バナナシェイク。プリーズヘルプミー。 (※レジのボタンを激しく叩く仕草) お会計630円で… カルロスの方の… 630円です。 はい。 はい。30円のお返しです。 あと、これ500円以上お買い上げの方に差し上げてるんですけど。 レシートです。 お箸は2膳でよろしかったですか? シェイクの方、砂糖とミルクお付けしますか? お待たせしましたー。 こちら、つまんないものです。 あの、今キャンペーンやってまして。 こちら、スクラッチ削ってもらってよろしいですか? ちょっと何言ってるか分かんない。 いろんな商品が当たります。 おめでとうございます!1等なります! 1等、(※ポテトの発音で)ホタテになります。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

https://stackoverflow.com/questions/45266707/keras-typeerror-expected-int32-got-list-containing-tensors-of-type-message

例えばこんな感じの話がありますね。

調べる限り、tensorflowのバージョンが低いせいであることが多いです。

1.2以上を使っていますか?

投稿2018/07/07 15:13

mkgrei

総合スコア8560

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

zwei50333456

2018/07/07 17:21

確認したところバージョンが0.8でした。jupyter notebookを使っており環境を切りかえてバージョンが足りていませんでした。これで出来そうです。ありがとうございます‼️
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問