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

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

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

Q&A

解決済

1回答

854閲覧

tensorflowでの演算について

moriterukun

総合スコア7

0グッド

0クリップ

投稿2018/06/02 05:40

下記のコードのように、tensorflowで、random_normal で初期化した行列に足し算をしたらうまくブロードキャストされないのですが、理由がよくわかりません。
Aが 3 x 3の行列で、 Bが 3 x 1の行列です。
どなたか教えていただけますと幸いです。

import tensorflow as tf import numpy as np A = tf.random_normal([3, 3], mean=1, stddev=4, seed = 1) B = tf.Variable([[1, 2, 3]], dtype=tf.float32) C = A + B init = tf.initialize_all_variables() with tf.Session() as sess: sess.run(init) print("A") print(A.eval()) print("\nB") print(B.eval()) print("\nC") print(C.eval())

以下実行結果

A [[-2.24527287 6.93839502 1.26131749] [-8.77081585 1.39699364 3.36489725] [ 3.37129188 -7.49171829 -1.89158893]] B [[ 1. 2. 3.]] C [[ 6.96361637 4.79503536 5.32562923] [ 2.75787783 2.64941168 2.83947849] [ 1.70853901 9.26744461 1.85234141]]

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

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

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

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

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

guest

回答1

0

ベストアンサー

自分は素人なのですが、本質問に興味がわいたので「TensorFlow 使い方」で見つけた以下のページを参照して考えてみました。
http://www.tensorflow-partner.jp/howtouse

うまくブロードキャストされない

そういうことではなくTensorFlowの「トレーニング・グラフを繰り返し実行する」という特徴のため、値の取得を変数ごとにeval()で行うと都度オペレーターが起動されているということであると思いました。

試しにC.eval()sess.run(C)を複数回実行すると毎回異なる値が出力されました。

以下のようにしてA, B, Cを一度にフェッチすると同一のグラフ実行での各オペレーター(A, B, C)の出力結果が得られました。

python

1import tensorflow as tf 2 3A = tf.random_normal([3, 3], mean=1, stddev=4, seed=1) 4B = tf.Variable([[1, 2, 3]], dtype=tf.float32) 5C = A + B 6 7init = tf.global_variables_initializer() 8 9with tf.Session() as sess: 10 sess.run(init) 11 result = sess.run([A, B, C]) 12 for name, value in zip("ABC", result): 13 print(name) 14 print(value)
A [[-2.2452729 6.938395 1.2613175] [-8.770817 1.3969936 3.3648973] [ 3.3712919 -7.4917183 -1.8915889]] B [[1. 2. 3.]] C [[-1.2452729 8.938395 4.2613173] [-7.770817 3.3969936 6.3648973] [ 4.371292 -5.4917183 1.1084111]]

投稿2018/06/02 20:21

編集2018/06/02 20:31
KSwordOfHaste

総合スコア18392

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

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

moriterukun

2018/06/02 23:52

おっしゃる通りでした。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.50%

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

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

質問する

関連した質問