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

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

ただいまの
回答率

90.52%

  • Python

    7953questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    673questions

tensorflowのLSTMネットワークをフィルタのように利用したいです

受付中

回答 0

投稿

  • 評価
  • クリップ 0
  • VIEW 197

engineer8

score 2

 前提・実現したいこと

tensorflowのLSTMを用いてリアルタイムでフィルタ処理を行いたいのですがうまくできません。
具体的には以下のコードで中間層の情報をインスタンス変数として保存し、cell(x[:, t, :], self.state) によってLSTMの出力をサンプリング毎に取得できないかと考えました。しかしエラーは出ませんが def value()を実行するたびに self.stateが初期状態に戻されてしまっているようです。

 該当のソースコード

        def inference(x, n_batch, maxlen=None, n_hidden=None, n_out=None):
            def weight_variable(shape, name=None):
                initial = tf.truncated_normal(shape, stddev=0.01)
                return tf.Variable(initial, name=name)

            def bias_variable(shape, name=None):
                initial = tf.zeros(shape, dtype=tf.float32)
                return tf.Variable(initial, name=name)
            #cell = tf.contrib.rnn.BasicRNNCell(n_hidden)
            cell1 = tf.contrib.rnn.LSTMCell(n_hidden, use_peepholes=True, forget_bias=1.0)
            cell2 = tf.contrib.rnn.LSTMCell(n_hidden, use_peepholes=True, forget_bias=1.0)
            cell3 = tf.contrib.rnn.LSTMCell(n_hidden, use_peepholes=True, forget_bias=1.0)
            cell = tf.contrib.rnn.MultiRNNCell([cell1, cell2, cell3])
            self.initial_state = cell.zero_state(n_batch, tf.float32)

            V = weight_variable([n_hidden, n_out], name='W_out')
            tf.summary.histogram('W_out', V)
            c = bias_variable([n_out], name='b_out')
            tf.summary.histogram('b_out', c)
            if self.flag:
                self.state = self.initial_state
                self.flag = False
            if self.maxlen != 1:
                self.state = self.initial_state

            outputs = []  # 過去の隠れ層の出力を保存
            #with tf.variable_scope('LSTM'):
            for t in range(maxlen):#学習時以外は maxlen = 1
                #if t > 0:
                       #tf.get_variable_scope().reuse_variables()
                (cell_output, self.state) = cell(x[:, t, :], self.state)
                    ########
                outputs.append(tf.matmul(cell_output, V) + c)
            y = tf.concat(outputs,1)
            y = tf.reshape(y,[n_batch,maxlen,2])
            return y


        self.y = inference(self.x, self.n_batch, maxlen=self.maxlen, n_hidden=self.n_hidden, n_out=self.n_out)


  def value(self, X, batch_size=1):
        y_ = self.y.eval(session=self.sess, feed_dict={
        self.x: X,
        self.n_batch: batch_size
        })
        return y_

 試したこと

ここに問題に対して試したことを記載してください。

 補足情報(FW/ツールのバージョンなど)

ここにより詳細な情報を記載してください。

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

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

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

    クリップを取り消します

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

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

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

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

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

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

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

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

    質問の評価を下げる

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

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

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

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

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

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

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

    詳細な説明はこちら

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

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

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

質問への追記・修正の依頼

  • mkgrei

    2018/06/14 19:37

    これだけだとコードが動かないので、インタプリタになって人が頑張らないといけないのですが…回答がつきにくくなると思います。

    キャンセル

  • engineer8

    2018/06/17 18:03

    全部書いた方が良いのですね、次回から気をつけます。別のライブラリを使ったらできました。

    キャンセル

まだ回答がついていません

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

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

関連した質問

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

  • Python

    7953questions

    Pythonは、コードの読みやすさが特徴的なプログラミング言語の1つです。 強い型付け、動的型付けに対応しており、後方互換性がないバージョン2系とバージョン3系が使用されています。 商用製品の開発にも無料で使用でき、OSだけでなく仮想環境にも対応。Unicodeによる文字列操作をサポートしているため、日本語処理も標準で可能です。

  • TensorFlow

    673questions