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

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

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

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

Python

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

Q&A

解決済

1回答

1590閲覧

出力結果の意味がわからない

退会済みユーザー

退会済みユーザー

総合スコア0

Python 3.x

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

Python

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

0グッド

0クリップ

投稿2017/04/16 12:58

出力結果の意味がわからないです。
現在、本を読んでTensorFlowの勉強をしています。

import tensorflow as tf import numpy as np input_dim =2 output_dim =1 x = tf.placeholder("float",[None,input_dim]) #重み W = tf.Variable(tf.random_uniform([input_dim,output_dim],-1.0,1.0)) #バイアス b = tf.Variable(tf.random_normal([output_dim])) #シグモイド活性化調節 y = tf.nn.sigmoid(tf.matmul(x,W)+b) y_ = tf.placeholder("float",[None,output_dim]) loss = tf.reduce_mean(tf.square(y-y_)) train_step = tf.train.MomentumOptimizer(0.01,0.97).minimize(loss) init = tf.initialize_all_variables() sess = tf.Session() sess.run(init) for i in range(5000): batch_xs = np.array([ [0.,0.], [0.,1.], [1.,0.], [1.,1.] ]) batch_ys = np.array([ [0.], [0.], [0.], [1.] ]) sess.run(train_step, feed_dict={x: batch_xs, y_: batch_ys}) print(i,sess.run(y,feed_dict={x: batch_xs, y_: batch_ys}))

というコードを書いて実行しました。
その結果、

4989 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4990 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4991 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4992 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4993 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4994 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4995 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4996 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4997 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4998 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]] 4999 [[ 5.96046448e-08] [ 9.99999464e-01] [ 9.99999702e-01] [ 7.74860382e-07]]

という出力が得られました。
しかし、どうしてこのような出力が得られるのかがわかりません。
そもそも、このコードが何をやっているのか理解できていないのですが、

batch_xs = np.array([ [0.,0.], [0.,1.], [1.,0.], [1.,1.] ]) batch_ys = np.array([ [0.], [0.], [0.], [1.] ])

こう書いて、.の後に何も書いていなく、.の後にどういう数字が入るのか予測できないのでしょうか?
このコードは何をやっていて、どうしてこのような数字のランダムな出力になるのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

提示されている出力は本当にこのコードの出力ですか?
私には、論理和(OR)の学習結果のように思います。手元で実行すると、

4995 [[ 3.27933638e-04] [ 6.08523525e-02] [ 6.08523525e-02] [ 9.27528262e-01]] 4996 [[ 3.27818911e-04] [ 6.08457364e-02] [ 6.08457364e-02] [ 9.27536249e-01]] 4997 [[ 3.27704241e-04] [ 6.08390868e-02] [ 6.08390868e-02] [ 9.27544117e-01]] 4998 [[ 3.27589602e-04] [ 6.08324371e-02] [ 6.08324371e-02] [ 9.27552044e-01]] 4999 [[ 3.27475311e-04] [ 6.08258434e-02] [ 6.08258434e-02] [ 9.27559912e-01]]

コードの通り、論理積(AND)の学習結果となります。

  1. などの表記は、単に型が実数であることを明示しているだけで、0.0 と同じです。

念のために書くと、

batch_xs = np.array([ [0.,0.], [0.,1.], [1.,0.], [1.,1.] ]) batch_ys = np.array([ [0.], [0.], [0.], [1.] ])

この部分は

(0, 0) → 0
(0, 1) → 0
(1, 0) → 0
(1, 1) → 1

という教師データを指定しているコードとなります。

投稿2017/04/18 16:45

MasashiKimura

総合スコア1150

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

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

退会済みユーザー

退会済みユーザー

2017/04/19 05:37

なるほど!ありがとうございます。2つ質問があります。まず、eを指定していないのに、どうして[ 3.27818911e-04][ 6.08457364e-02]などeが含まれる数字が出力されるのでしょうか?また、コードのどの部分から論理和(OR)の学習結果と判断されたのでしょうか?
MasashiKimura

2017/04/19 12:43

たとえば、 1.0e-2 は 1.0×(10の-2乗)という意味です。0.001と同じですね。このように見れば、結果から論理和、論理積が判断できる理由は解ると思います。
退会済みユーザー

退会済みユーザー

2017/04/20 00:37

論理積はAND、論理和はORであり、例えば 4995 [[ 3.27933638e-04] [ 6.08523525e-02] [ 6.08523525e-02] [ 9.27528262e-01]] という出力結果があったときにこの数字のどの部分からそれを読み取っているのでしょうか? 足し算にも、規則性のある値の出力にも思えませんが... 論理積はベン図の重なっているところ、論理和はベン図の全体であって、出力結果がどちらかに該当しているとは思えないのですが。 http://www.pursue.ne.jp/jouhousyo/sysad/sysad011.htm
ozwk

2017/04/20 01:09

質問文の学習結果はORじゃなくてXORじゃないですかね?
can110

2017/04/20 09:42

質問で提示された結果はXORのそれと思われます。 が、提示されたコード(単層)ではXORは原理的に学習できないという謎は残りますが。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.49%

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

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

質問する

関連した質問