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

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

新規登録して質問してみよう
ただいま回答率
85.50%
Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

Q&A

解決済

1回答

4468閲覧

kerasでSyntaxErrorがでます。

yep

総合スコア45

Keras

Kerasは、TheanoやTensorFlow/CNTK対応のラッパーライブラリです。DeepLearningの数学的部分を短いコードでネットワークとして表現することが可能。DeepLearningの最新手法を迅速に試すことができます。

Python 3.x

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

機械学習

機械学習は、データからパターンを自動的に発見し、そこから知能的な判断を下すためのコンピューターアルゴリズムを指します。人工知能における課題のひとつです。

0グッド

0クリップ

投稿2018/10/22 06:38

編集2018/10/22 06:43

自力で単純なautoencoderを頑張って書いてみました。
しかし、
File "C:\Users\yudai\Desktop\keras_AE.py", line 53
encoded_h1 = Dense(128, activation='relu')(input_word)
^
SyntaxError: invalid syntax
と出力されます。
もし原因がわかる方やもっとこうしたらいいのに、というご意見がある方は、
何卒、ご教授宜しくお願い致します。

python

1from keras.layers import Input, Dense 2from keras.models import Model 3import numpy as np 4import io 5#学習結果の図式化用モジュール 6from keras.utils.visualize_util import plot 7 8#データの前処理 9#データの読み込み 10path = get_file('C:\Users\hoge\Desktop\poem.txt') 11with io.open(path, encoding='utf-8') as f: 12 text = f.read() 13#コーパスの長さ 14print('corpus length:', len(text)) 15#文字数を数えるため、textをソート 16chars = sorted(list(set(text))) 17#全文字数の表示 18print('total chars:', len(chars)) 19#文字をID変換 20char_indices = dict((c, i) for i, c in enumerate(chars)) 21#IDから文字へ変換 22indices_char = dict((i, c) for i, c in enumerate(chars)) 23#テキストを一行ずつ読み込む 24maxlen = f.readline() 25#サンプルバッチ数 26step = 3 27sentences = [] 28next_chars = [] 29for i in range(0, len(text) - maxlen, step): 30 sentences.append(text[i: i + maxlen]) 31 next_chars.append(text[i + maxlen]) 32#学習する文字数を表示 33print('Sequences:', len) 34 35#ベクトル化する 36print('Vectorization...') 37x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool) 38y = np.zeros((len(sentences), len(chars)), dtype=np.bool) 39for i, sentence in enumerate(sentences): 40 for t, char in enumerate(sentence): 41 x[i, t, char_indices[char]] = 1 42 y[i, char_indices[next_chars[i]]] = 1 43 44#モデルを構築する工程に入る 45print('Build model...') 46#encoderの次元 47encoding_dim = 128 48#入力用の変数 49input_word = Input(shape=(x ,y) 50#入力された語がencodeされたものを格納する 51encoded_h1 = Dense(128, activation='relu')(input_word) 52encoded_h2 = Dense(64, activation='relu')(encoded_h1) 53encoded_h3 = Dense(32, activation='relu')(encoded_h2) 54#潜在変数(実質的な主成分分析) 55latent = Dense(8, activation='relu')(encoded_h3) 56#encodeされたデータを再構成 57decoded_h1 = Dense(32, activation='relu')(latent) 58decoded_h2 = Dense(64, activation='relu')(decoded_1) 59decoded_h3 = Dense(128, activation='relu')(encoded_2) 60 61output = Dense(100, activation) 62 63autoencoder = Model(input=input_word, output=decoded) 64#Adamで最適化、loss関数をcategorical_crossentropy 65autoencoder.compile(optimizer='Adam', loss='categorical_crossentropy') 66 67plot(autoencoder, to_file='AE_model.png') 68#autoencoderの実行 69autoencoder.fit(x_train, 70 epoch=1000, 71 batch_size=256, 72 shuffle=True, 73 validation_data=(test_word) 74#モデルの構造を保存 75model_json = autoencoder.to_json() 76with open('keras_AE.json', 'w') as json_file: 77 json_file.write(model_json) 78#学習済みモデルの重みを保存 79autoencoder.save_weights('AE.h5') 80 81decoded_word = autoencoder.predict(word_test) 82 83X_embedded = model.predict(X_train) 84autoencoder.fit(X_embedded,X_embedded,epochs=10, 85 batch_size=256, validation_split=.1)

C:\Users\hoge\Desktop\poem.txtは、webから2万9000件の俳句を一文ずつ抽出し、MeCabで形態素解析を行っています。
例:かき くえば かね が なる なり ほうりゅうじ

#環境
Windows 10

python 3.7.0
tensorflow-gpu 1.9.0
keras 2.2.4

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

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

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

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

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

guest

回答1

0

ベストアンサー

SyntaxErrorはkerasとは一切関係ない、ただのpythonの構文エラーです。

python

1input_word = Input(shape=(x ,y) 2

カッコの閉じ忘れ。

75行目あたりにも同じミスがありますね。

python

1autoencoder.fit(x_train, 2 epoch=1000, 3 batch_size=256, 4 shuffle=True, 5 validation_data=(test_word)

SyntaxErrorはこれで終わりですが(コピペして確認した限りでは)、まだまだたくさんエラーが出るみたいなので頑張ってデバッグしてください。

静的解析ツールを使える開発環境を利用することをおすすめします。

投稿2018/10/22 06:40

編集2018/10/22 06:45
hayataka2049

総合スコア30933

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

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

yep

2018/10/22 07:19

今のところ、 プレフィックスに'r'を付けunicode errorを修正 ライブラリをimport codecsなどにしてやっとkerasがでてきました。 input_word = Input(shape=(x ,y))で TypeError: Error converting shape to a TensorShape: only size-1 arrays can be converted to Python scalars. となります。 x, yを入力させるはずなのですが。
hayataka2049

2018/10/22 07:25

shapeは配列の次元数(numpy配列のshapeと同様)を指定する引数なので、データらしきものを渡しているのがそもそもおかしいです 私はkerasに詳しくないのと、質問文のコードを読み込んでいないので、これ以上の適切な回答はすぐにはできません。別に質問を立てた方が迅速に解決するかと思います
yep

2018/10/22 07:48

そうだったんですね。 丁寧なご回答ありがとうございました。 とりあえずですが、Input(shape=(x ,y)を Input(shape=(32, )で通りはしましたが、まだまだエラーが頻発しているので直していきたいです。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問