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

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

ただいまの
回答率

88.63%

学習したデータを可視化できません

解決済

回答 1

投稿 編集

  • 評価
  • クリップ 2
  • VIEW 1,039

yep

score 45

autoencoderで、学習した結果を出力したいのですが、

[[[0.         0.         0.         0.         0.24245892 0.
   0.         0.         0.        ]
  [0.         0.         0.         0.         0.         0.
   0.         0.         0.15186222]]

 [[0.         0.         0.         0.         0.         0.
   0.         0.27800256 0.        ]
  [0.         0.14638866 0.         0.         0.         0.
   0.         0.         0.        ]]]


となってしまいます。

原因を推測される方は何卒、宜しくお願い致します。

poem.txtは、

朝霧 の 中 に 九段 の ともし 哉
あたたか な 雨 が 降る なり 枯葎
菜の花 や は つと 明るき 町 は づれ
秋風 や 伊予 へ 流る る 汐 の 音
長閑 さ や 障子 の 穴 に 海 見え て

となっています。

import numpy as np
import codecs
import keras
from keras.layers import Activation, Dense, Input
from keras.models import Model
import sys

with open(r'./Desktop/haiku.txt', encoding='utf-8') as f:
    poems = f.readlines()
    for p in poems:
        s = p.rstrip()
        s = s.split(' ')

chars = sorted(list(set(poems)))
char_indices = dict((c, i) for i, c in enumerate(chars))
maxlen = 2
step = 3
sentences = []
for i in range(0, len(poems) - maxlen, step):
    sentences.append(poems[i: i + maxlen])

input_word = Input(shape=(maxlen, len(chars)))
indices_char = dict((i, c) for i, c in enumerate(chars))

x = np.zeros((len(sentences), maxlen, len(chars)), dtype=np.bool)
for i, sentence in enumerate(sentences):
    for t, char in enumerate(sentence):
        x[i, t, char_indices[char]] = 10

encoding_dim = 128
input_word = Input(shape=(maxlen, len(chars)))
encoded_1 = Dense(128, activation='relu')(input_word)
encoded_2 = Dense(64, activation='relu')(encoded_1)
encoded_3 = Dense(32, activation='relu')(encoded_2)
latent = Dense(8, activation='relu')(encoded_3)
decoded_1 = Dense(32, activation='relu')(latent)
decoded_2 = Dense(64, activation='relu')(decoded_1)
decoded_3 = Dense(5, activation='relu')(encoded_2)
autoencoder = Model(inputs=input_word, outputs=decoded_3)
autoencoder.compile(optimizer='Adam', loss='categorical_crossentropy')

autoencoder.fit(x, x,
       epochs=1,
       batch_size=150,
       shuffle=False)
bunsyo = autoencoder.predict(x[1:17], batch_size=10, verbose=1, steps=None)
print(bunsyo)
  • 気になる質問をクリップする

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

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

    クリップを取り消します

  • 良い質問の評価を上げる

    以下のような質問は評価を上げましょう

    • 質問内容が明確
    • 自分も答えを知りたい
    • 質問者以外のユーザにも役立つ

    評価が高い質問は、TOPページの「注目」タブのフィードに表示されやすくなります。

    質問の評価を上げたことを取り消します

  • 評価を下げられる数の上限に達しました

    評価を下げることができません

    • 1日5回まで評価を下げられます
    • 1日に1ユーザに対して2回まで評価を下げられます

    質問の評価を下げる

    teratailでは下記のような質問を「具体的に困っていることがない質問」、「サイトポリシーに違反する質問」と定義し、推奨していません。

    • プログラミングに関係のない質問
    • やってほしいことだけを記載した丸投げの質問
    • 問題・課題が含まれていない質問
    • 意図的に内容が抹消された質問
    • 過去に投稿した質問と同じ内容の質問
    • 広告と受け取られるような投稿

    評価が下がると、TOPページの「アクティブ」「注目」タブのフィードに表示されにくくなります。

    質問の評価を下げたことを取り消します

    この機能は開放されていません

    評価を下げる条件を満たしてません

    評価を下げる理由を選択してください

    詳細な説明はこちら

    上記に当てはまらず、質問内容が明確になっていない質問には「情報の追加・修正依頼」機能からコメントをしてください。

    質問の評価を下げる機能の利用条件

    この機能を利用するためには、以下の事項を行う必要があります。

回答 1

checkベストアンサー

+1

あまり詳しくないので、細かいところはわかりませんが、答えられるところまで。

decoded_3はあくまで学習モデルの一部で、結果を持っているわけではありません。
結果を取得したい場合は、(事前にfit()などで学習を完了させた上で)predict()かpredict_on_batch()を使ってください(参考)。

投稿

  • 回答の評価を上げる

    以下のような回答は評価を上げましょう

    • 正しい回答
    • わかりやすい回答
    • ためになる回答

    評価が高い回答ほどページの上位に表示されます。

  • 回答の評価を下げる

    下記のような回答は推奨されていません。

    • 間違っている回答
    • 質問の回答になっていない投稿
    • スパムや攻撃的な表現を用いた投稿

    評価を下げる際はその理由を明確に伝え、適切な回答に修正してもらいましょう。

  • 2018/10/26 20:55

    predictを使いましたが、配列が出力されました。これは、変換する必要がありますか?

    キャンセル

  • 2018/10/26 21:01

    最終的にどんなのを得たいかによりますが、入力も出力も配列なので、それに合わせて適宜変換する必要があります。

    キャンセル

  • 2018/10/26 21:28 編集

    最終的には、このようなものを得たいです。
    長閑 さ や 障子 の 穴 に 海 見え て
    長閑さや障子の穴に海見えて

    キャンセル

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

  • ただいまの回答率 88.63%
  • 質問をまとめることで、思考を整理して素早く解決
  • テンプレート機能で、簡単に質問をまとめられる

関連した質問

同じタグがついた質問を見る