teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

23

しりたいことを編集

2019/08/28 17:22

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
 
7
7
 
8
8
  #知りたいこと
9
- ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?
9
+ ループで同じデータを入れた時に毎回同じ予測値を得るには、他に固定すべき乱数シードがあるのでしょうか?
10
10
  もしくはCPUでも全く同じ値にはならないのでしょうか?
11
11
 
12
12
  (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)

22

ソースコードを修正

2019/08/28 17:21

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -12,10 +12,13 @@
12
12
  (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
13
13
 
14
14
  #ソースコード(再現動作可能)
15
- 5/30 [sklearnボストンのデータセット](https://newtechnologylifestyle.net/%E3%83%9C%E3%82%B9%E3%83%88%E3%83%B3%E5%B8%82%E3%81%AE%E4%BD%8F%E5%AE%85%E4%BE%A1%E6%A0%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%8B/)を使用して、コピペで動作が再現出来る物替えました。
15
+ 7/20 [kerasで学習が再現できない人へ](https://qiita.com/okotaku/items/8d682a11d8f2370684c9)を参考追記てみました。
16
+ ※5/30 [sklearnボストンのデータセット]
17
+ (https://newtechnologylifestyle.net/%E3%83%9C%E3%82%B9%E3%83%88%E3%83%B3%E5%B8%82%E3%81%AE%E4%BD%8F%E5%AE%85%E4%BE%A1%E6%A0%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%8B/)を使用して、コピペで動作が再現出来る物に差し替えました。
16
18
   犯罪発生数を目的変数にして他の説明変数で学習し、予測する形になっています。
17
19
   実行すると、予測値が毎回異なってしまいます。
18
20
  ```Python
21
+ import os
19
22
  import pandas as pd
20
23
  import numpy as np
21
24
  #from sklearn.preprocessing import MinMaxScaler
@@ -45,13 +48,17 @@
45
48
  n_neurons_1 = 256
46
49
  n_neurons_2 = 128
47
50
 
51
+ os.environ['PYTHONHASHSEED'] = '0'
48
52
  random.seed(0) # Pythonの乱数シードを固定
49
53
  np.random.seed(0) # Numpyの乱数シードを固定
50
54
  tf.set_random_seed(0) # TensorFlowの乱数シードを固定
51
55
 
52
-
56
+ session_conf = tf.ConfigProto(
57
+ intra_op_parallelism_threads=1,
58
+ inter_op_parallelism_threads=1
59
+ )
53
60
  # セッションの開始
54
- tf_sess = tf.InteractiveSession()
61
+ tf_sess = tf.InteractiveSession(config=session_conf)
55
62
 
56
63
  # random.seed(0) # Pythonの乱数シードを固定
57
64
  # np.random.seed(0) # Numpyの乱数シードを固定
@@ -152,12 +159,9 @@
152
159
 
153
160
  ##参考URL
154
161
  [参考URL](http://www.algo-fx-blog.com/tensorflow-neural-network-fx/)
162
+ [kerasで学習が再現できない人へ](https://qiita.com/okotaku/items/8d682a11d8f2370684c9)
155
163
 
156
- ##発生している警告
157
- I tensorflow/core/platform/cpu_feature_guard.cc:141] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX AVX2
158
164
 
159
- FutureWarning: Conversion of the second argument of issubdtype from `float` to `np.floating` is deprecated. In future, it will be treated as `np.float64 == np.dtype(float).type`.
160
-
161
165
  #環境
162
166
  エディタ:VSCode
163
167
  Python :3.6.4 64-bit(base:conda)

21

ライブラリのバージョン変更

2019/07/20 06:35

投稿

Wind
Wind

スコア442

title CHANGED
@@ -1,1 +1,1 @@
1
- TensorFlow(CPU)でループ毎に異なる予測値になる(5/30ソースコード変更)
1
+ TensorFlow(CPU)でループ毎に異なる予測値になってしまう
body CHANGED
@@ -161,4 +161,4 @@
161
161
  #環境
162
162
  エディタ:VSCode
163
163
  Python :3.6.4 64-bit(base:conda)
164
- TensorFlow:1.12.0
164
+ TensorFlow:1.13.1

20

ソースコード調整

2019/07/20 05:49

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -18,7 +18,7 @@
18
18
  ```Python
19
19
  import pandas as pd
20
20
  import numpy as np
21
- from sklearn.preprocessing import MinMaxScaler
21
+ #from sklearn.preprocessing import MinMaxScaler
22
22
  from sklearn.preprocessing import StandardScaler
23
23
  import tensorflow as tf
24
24
  import random

19

表の削除

2019/06/02 10:45

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -4,19 +4,6 @@
4
4
  プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数をループさせると毎回異なる値になります。(初期化が足りないのでしょうか?)
5
5
  当然ですがデータのシャッフルは行わず、常に同一データを入れています。
6
6
 
7
- ###現在の予測値(1個目)のイメージ
8
- |ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
9
- |:-------:|:-----------:|:------------:|:------------:|
10
- |i = 0| 100 | 100 | 100 |
11
- |i = 1| 90 | 90 | 90 |
12
- |i = 2| 120 | 120 | 120 |
13
- |i = 3| 105 | 105 | 105 |
14
- |i = 4| 130 | 130 | 130 |
15
- |i = 5| 110 | 110 | 110 |
16
- |i = 6| 125 | 125 | 125 |
17
- |i = 7| 92 | 92 | 92 |
18
- |i = 8| 96 | 96 | 96 |
19
- |i = 9| 130 | 130 | 130 |
20
7
 
21
8
  #知りたいこと
22
9
  ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?

18

ソースコード調整

2019/06/01 09:21

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
 
27
27
  #ソースコード(再現動作可能)
28
28
  ※5/30 [sklearnボストンのデータセット](https://newtechnologylifestyle.net/%E3%83%9C%E3%82%B9%E3%83%88%E3%83%B3%E5%B8%82%E3%81%AE%E4%BD%8F%E5%AE%85%E4%BE%A1%E6%A0%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%8B/)を使用して、コピペで動作が再現出来る物に差し替えました。
29
-  犯罪数を目的変数にして他の説明変数で学習し、予測する形になっています。
29
+  犯罪発生数を目的変数にして他の説明変数で学習し、予測する形になっています。
30
30
   実行すると、予測値が毎回異なってしまいます。
31
31
  ```Python
32
32
  import pandas as pd
@@ -154,10 +154,10 @@
154
154
  for dat in data_columns: # カラム数-1でループ
155
155
  ans = tf_cross(bos_train, bos_test) # ***同じデータを毎回渡しているだけなのに、毎回同じ結果にならない***
156
156
  pred_inv = ans[0] # 予測値
157
- y_test_inv = ans[1] # 犯罪数
157
+ y_test_inv = ans[1] # 犯罪発生
158
158
 
159
159
  np.set_printoptions(suppress=True, formatter={'float': '{: 0.3f}'.format}) #printで指数表示を禁止する、小数点第三位まで表示
160
- print('発生数:' , y_test_inv)
160
+ print('犯罪発生数:' , y_test_inv)
161
161
  print('予測値:' , pred_inv)
162
162
 
163
163
  ```

17

知りたいことを追記

2019/05/30 11:17

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -20,6 +20,7 @@
20
20
 
21
21
  #知りたいこと
22
22
  ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?
23
+ もしくはCPUでも全く同じ値にはならないのでしょうか?
23
24
 
24
25
  (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
25
26
 

16

ソースコードの説明追加

2019/05/30 08:49

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -25,7 +25,7 @@
25
25
 
26
26
  #ソースコード(再現動作可能)
27
27
  ※5/30 [sklearnボストンのデータセット](https://newtechnologylifestyle.net/%E3%83%9C%E3%82%B9%E3%83%88%E3%83%B3%E5%B8%82%E3%81%AE%E4%BD%8F%E5%AE%85%E4%BE%A1%E6%A0%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%8B/)を使用して、コピペで動作が再現出来る物に差し替えました。
28
-  犯罪数を他の説明変数で学習し、予測する形になっています。
28
+  犯罪数を目的変数にして他の説明変数で学習し、予測する形になっています。
29
29
   実行すると、予測値が毎回異なってしまいます。
30
30
  ```Python
31
31
  import pandas as pd

15

データセット説明のリンクを追加

2019/05/30 07:06

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -24,7 +24,7 @@
24
24
  (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
25
25
 
26
26
  #ソースコード(再現動作可能)
27
- ※5/30 sklearnボストンのデータセットを使用して、コピペで動作が再現出来る物に差し替えました。
27
+ ※5/30 [sklearnボストンのデータセット](https://newtechnologylifestyle.net/%E3%83%9C%E3%82%B9%E3%83%88%E3%83%B3%E5%B8%82%E3%81%AE%E4%BD%8F%E5%AE%85%E4%BE%A1%E6%A0%BC%E3%82%92%E8%AA%BF%E3%81%B9%E3%81%A6%E3%81%BF%E3%82%8B/)を使用して、コピペで動作が再現出来る物に差し替えました。
28
28
   犯罪数を他の説明変数で学習し、予測する形になっています。
29
29
   実行すると、予測値が毎回異なってしまいます。
30
30
  ```Python

14

説明変更

2019/05/30 07:04

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -26,7 +26,7 @@
26
26
  #ソースコード(再現動作可能)
27
27
  ※5/30 sklearnボストンのデータセットを使用して、コピペで動作が再現出来る物に差し替えました。
28
28
   犯罪数を他の説明変数で学習し、予測する形になっています。
29
-  実行すると、予測値が毎回異なます。
29
+  実行すると、予測値が毎回異なってしいます。
30
30
  ```Python
31
31
  import pandas as pd
32
32
  import numpy as np

13

タグ変更

2019/05/30 06:59

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
File without changes

12

タグ追加

2019/05/30 06:09

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
File without changes

11

ソースコード変更

2019/05/30 05:59

投稿

Wind
Wind

スコア442

title CHANGED
@@ -1,1 +1,1 @@
1
- TensorFlowCPU演算が、関数呼び出す毎に違う結果になってしまう。
1
+ TensorFlow(CPU)ループ毎に異なる予測値になる(5/30ソースコード変更)
body CHANGED
@@ -1,11 +1,10 @@
1
1
  #わからないこと
2
- 関数にTensorFlow(CPU版)を書いて、ループ毎回同じデータを渡しても、毎異なる結果になってしまいます。
2
+ TensorFlow(CPU版)で同じデータを渡して学習し予測しても、ループ異なる予測値になってしまいます。
3
3
 
4
- プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数を10回ループさせると10全て異なる値になります。
4
+ プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数をループさせると回異なる値になります。(初期化が足りないのでしょうか?)
5
- 関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
6
5
  当然ですがデータのシャッフルは行わず、常に同一データを入れています。
7
6
 
8
- ###現在の結果のイメージ
7
+ ###現在の予測値(1個目)のイメージ
9
8
  |ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
10
9
  |:-------:|:-----------:|:------------:|:------------:|
11
10
  |i = 0| 100 | 100 | 100 |
@@ -20,49 +19,147 @@
20
19
  |i = 9| 130 | 130 | 130 |
21
20
 
22
21
  #知りたいこと
23
- ループで同じデータを入れた同じ結果を得るには、どうしたら良いのでしょうか?
22
+ ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?
24
23
 
25
- (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
24
+ (TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
26
25
 
27
- #ソースコード
26
+ #ソースコード(再現動作可能)
27
+ ※5/30 sklearnボストンのデータセットを使用して、コピペで動作が再現出来る物に差し替えました。
28
+  犯罪数を他の説明変数で学習し、予測する形になっています。
28
- 関数部分
29
+  実行すると、予測値が毎回異なります。
29
30
  ```Python
31
+ import pandas as pd
32
+ import numpy as np
33
+ from sklearn.preprocessing import MinMaxScaler
34
+ from sklearn.preprocessing import StandardScaler
35
+ import tensorflow as tf
36
+ import random
37
+
38
+ # サンプルデータセット(ボストン)
39
+ from sklearn.datasets import load_boston
40
+ boston = load_boston()
41
+
42
+
43
+ #y_bos = pd.DataFrame( boston.target) # 価格は使用しない
44
+ pd_bos = pd.DataFrame(boston.data, columns=boston.feature_names)
45
+
46
+ bos_test = pd_bos.iloc[0:100, :] # 行 0~100をテストデータにする
47
+ bos_train = pd_bos.iloc[100:500, :] # 行 101~500を訓練データにする
48
+
49
+ data_columns = bos_train.columns.values[1:] # 説明変数の名前を取得(犯罪数CRIMは目的変数とするので除外)
50
+ #print('説明変数:%s' % data_columns) # 説明変数を表示
51
+
52
+
53
+ # DL関数(学習データ, テストデータ)
54
+ # 返り値:予測値, 犯罪数
30
- def tf_cross(dat_train, dat_test):
55
+ def tf_cross(val_train, val_test):
31
56
  # ニューロンの数を設定
32
57
  n_neurons_1 = 256
33
58
  n_neurons_2 = 128
34
59
 
60
+ random.seed(0) # Pythonの乱数シードを固定
61
+ np.random.seed(0) # Numpyの乱数シードを固定
62
+ tf.set_random_seed(0) # TensorFlowの乱数シードを固定
63
+
64
+
65
+ # セッションの開始
66
+ tf_sess = tf.InteractiveSession()
67
+
35
68
  # random.seed(0) # Pythonの乱数シードを固定
36
69
  # np.random.seed(0) # Numpyの乱数シードを固定
37
70
  # tf.set_random_seed(0) # TensorFlowの乱数シードを固定
38
71
 
39
- # セッションの開始
72
+ #値を標準化
40
- tf_sess = tf.InteractiveSession()
73
+ scaler = StandardScaler()
74
+ scaler.fit(val_train)
75
+ val_train_std = scaler.transform(val_train)
41
- # tf_sess = tf.Session()
76
+ val_test_std = scaler.transform(val_test)
42
77
 
43
- random.seed(0) # Pythonの乱数シードを固定
44
- np.random.seed(0) # Numpyシード固定
78
+ y_train_std = val_train_std[:, 0] # 訓練データ目的変数を取得(先頭列)
79
+ X_train_std = val_train_std[:, 1:] # 訓練データの説明変数を取得(2列目以降)
45
- tf.set_random_seed(0) # TensorFlowシードを固定
80
+ y_test_std = val_test_std[:, 0] # テストデータ目的変
81
+ X_test_std = val_test_std[:, 1:] # テストデータの説明変数
46
82
 
83
+ # テストデータの目的変数を標準化から通常の値へ戻す
84
+ y_test = y_test_std.reshape(len(y_test_std), 1)
85
+ y_test_inv = np.concatenate((y_test, X_test_std), axis=1)
86
+ y_test_inv = scaler.inverse_transform(y_test_inv)
87
+ y_test_inv = y_test_inv[:, 0]
47
88
 
48
- scaler = StandardScaler() # 標準化
49
- scaler.fit(dat_train)
50
- dat_train_std = scaler.transform(dat_train)
51
- dat_test_std = scaler.transform(dat_test)
52
89
 
53
- # 中略(処理内容やパラメータは基本的に下記の参考URLと同じ)
54
- # 概要はdat_trainで学習してdat_test予測値出す
90
+ # 訓練データ特徴量の"数"取得
91
+ n_stocks = X_train_std.shape[1] # shape[1]は列数
55
92
 
93
+
94
+ # プレースホルダーの作成
95
+ X = tf.placeholder(dtype=tf.float32, shape=[None, n_stocks])
96
+ Y = tf.placeholder(dtype=tf.float32, shape=[None])
97
+
98
+
99
+ # 初期化
100
+ sigma = 1
101
+ weight_initializer = tf.variance_scaling_initializer(mode="fan_avg", distribution="uniform", scale=sigma)
102
+ bias_initializer = tf.zeros_initializer()
103
+
104
+ # Hidden weights
105
+ W_hidden_1 = tf.Variable(weight_initializer([n_stocks, n_neurons_1]))
106
+ bias_hidden_1 = tf.Variable(bias_initializer([n_neurons_1]))
107
+ W_hidden_2 = tf.Variable(weight_initializer([n_neurons_1, n_neurons_2]))
108
+ bias_hidden_2 = tf.Variable(bias_initializer([n_neurons_2]))
109
+
110
+
111
+ # 出力の重み
112
+ W_out = tf.Variable(weight_initializer([n_neurons_2, 1])) # 2層
113
+ bias_out = tf.Variable(bias_initializer([1]))
114
+
115
+ # 隠れ層の設定(ReLU=活性化関数)(収束がすばやいが、極端な出力値が生成される可能性がある)
116
+ # hidden_1 = tf.nn.relu(tf.add(tf.matmul(X, W_hidden_1), bias_hidden_1))
117
+ # hidden_2 = tf.nn.relu(tf.add(tf.matmul(hidden_1, W_hidden_2), bias_hidden_2))
118
+
119
+ # 隠れ層の設定:活性化関数をシグモイド(極端な出力値が少ないが、収束が遅い)
120
+ hidden_1 = tf.nn.sigmoid(tf.add(tf.matmul(X, W_hidden_1), bias_hidden_1))
121
+ hidden_2 = tf.nn.sigmoid(tf.add(tf.matmul(hidden_1, W_hidden_2), bias_hidden_2))
122
+
123
+ # 出力層の設定
124
+ out = tf.transpose(tf.add(tf.matmul(hidden_2, W_out), bias_out))
125
+
126
+ # コスト関数
127
+ mse = tf.reduce_mean(tf.squared_difference(out, Y))
128
+ # 最適化関数
129
+ opt = tf.train.AdamOptimizer().minimize(mse)
130
+ # 全ての変数を初期化
131
+ tf_sess.run(tf.global_variables_initializer())
132
+
133
+ # ニューラルネットワークの設定
134
+ batch_size = 128
135
+
136
+ # 訓練開始 n回の反復処理
137
+ epochs = 100
138
+ for e in range(epochs):
139
+ tf_sess.run(opt, feed_dict={X: X_train_std, Y: y_train_std}) # 標準化されたデータで訓練
140
+
141
+ # テストデータで予測
142
+ pred_test = tf_sess.run(out, feed_dict = {X: X_test_std})
143
+
144
+ pred_test = np.concatenate((pred_test.T, X_test_std), axis=1)
145
+ pred_inv = scaler.inverse_transform(pred_test) # 標準化から戻す
146
+ pred_inv = pred_inv[:, 0] # 1行目だけ取り出す(予測値)
56
- tf_sess.close() # セッションを閉じる
147
+ tf_sess.close() # セッションを閉じる
148
+
57
- return ans # 結果を返す
149
+ return pred_inv, y_test_inv # 予測値と犯罪数を返す
150
+
151
+
152
+ # ループ
153
+ for dat in data_columns: # カラム数-1でループ
154
+ ans = tf_cross(bos_train, bos_test) # ***同じデータを毎回渡しているだけなのに、毎回同じ結果にならない***
155
+ pred_inv = ans[0] # 予測値
156
+ y_test_inv = ans[1] # 犯罪数
157
+
158
+ np.set_printoptions(suppress=True, formatter={'float': '{: 0.3f}'.format}) #printで指数表示を禁止する、小数点第三位まで表示
159
+ print('発生数:' , y_test_inv)
160
+ print('予測値:' , pred_inv)
161
+
58
162
  ```
59
- 呼び出し部分
60
- ```Python
61
- data_columns = data_train.columns.values[1:] # 項目名の取得
62
- # data_trainとdata_testへの加工は一切無し(将来的には加工して比較する予定)
63
- for dat in data_columns: # データの項目数でループ
64
- ans = tf_cross(data_train, data_test) # 毎回同じデータを渡しているだけなのに、毎回異なる結果になる
65
- ```
66
163
 
67
164
 
68
165
  ##参考URL

10

表の修正

2019/05/30 05:56

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -6,7 +6,7 @@
6
6
  当然ですがデータのシャッフルは行わず、常に同一データを入れています。
7
7
 
8
8
  ###現在の結果のイメージ
9
- |ループ回数| 起動1回目 | 起動2回目 | 起動3回目 |
9
+ |ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
10
10
  |:-------:|:-----------:|:------------:|:------------:|
11
11
  |i = 0| 100 | 100 | 100 |
12
12
  |i = 1| 90 | 90 | 90 |

9

表を追記

2019/05/30 02:06

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -5,6 +5,20 @@
5
5
  関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
6
6
  当然ですがデータのシャッフルは行わず、常に同一データを入れています。
7
7
 
8
+ ###現在の結果のイメージ
9
+ |ループ回数| 起動1回目 | 起動2回目 | 起動3回目 |
10
+ |:-------:|:-----------:|:------------:|:------------:|
11
+ |i = 0| 100 | 100 | 100 |
12
+ |i = 1| 90 | 90 | 90 |
13
+ |i = 2| 120 | 120 | 120 |
14
+ |i = 3| 105 | 105 | 105 |
15
+ |i = 4| 130 | 130 | 130 |
16
+ |i = 5| 110 | 110 | 110 |
17
+ |i = 6| 125 | 125 | 125 |
18
+ |i = 7| 92 | 92 | 92 |
19
+ |i = 8| 96 | 96 | 96 |
20
+ |i = 9| 130 | 130 | 130 |
21
+
8
22
  #知りたいこと
9
23
  ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
10
24
 

8

知りたいことを追記

2019/05/30 01:46

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -8,7 +8,7 @@
8
8
  #知りたいこと
9
9
  ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
10
10
 
11
- (ニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
11
+ TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
12
12
 
13
13
  #ソースコード
14
14
  関数部分

7

知りたいことを追記

2019/05/30 01:34

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -8,6 +8,8 @@
8
8
  #知りたいこと
9
9
  ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
10
10
 
11
+ (ニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
12
+
11
13
  #ソースコード
12
14
  関数部分
13
15
  ```Python

6

わからないことの詳細を追記

2019/05/30 01:32

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -1,8 +1,13 @@
1
1
  #わからないこと
2
2
  関数にTensorFlow(CPU版)を書いて、ループで毎回同じデータを渡しても、毎回異なる結果になってしまいます。
3
- (プログラム実行時は毎回同じ値にはなりますが、プログラム内部で10回ループさせると10回全て異なる値になります。データのシャッフルは行っていません。)
4
- ループで同じデータを入れたら同じ結果になる様にするには、どうしたら良いのでしょうか?
5
3
 
4
+ プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数を10回ループさせると10回全て異なる値になります。
5
+ 関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
6
+ 当然ですがデータのシャッフルは行わず、常に同一データを入れています。
7
+
8
+ #知りたいこと
9
+ ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
10
+
6
11
  #ソースコード
7
12
  関数部分
8
13
  ```Python

5

わからないことを修正

2019/05/30 01:24

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -1,5 +1,6 @@
1
1
  #わからないこと
2
2
  関数にTensorFlow(CPU版)を書いて、ループで毎回同じデータを渡しても、毎回異なる結果になってしまいます。
3
+ (プログラム実行時は毎回同じ値にはなりますが、プログラム内部で10回ループさせると10回全て異なる値になります。データのシャッフルは行っていません。)
3
4
  ループで同じデータを入れたら同じ結果になる様にするには、どうしたら良いのでしょうか?
4
5
 
5
6
  #ソースコード
@@ -42,6 +43,7 @@
42
43
  ans = tf_cross(data_train, data_test) # 毎回同じデータを渡しているだけなのに、毎回異なる結果になる
43
44
  ```
44
45
 
46
+
45
47
  ##参考URL
46
48
  [参考URL](http://www.algo-fx-blog.com/tensorflow-neural-network-fx/)
47
49
 

4

ソースコードの修正

2019/05/30 01:16

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -10,12 +10,18 @@
10
10
  n_neurons_1 = 256
11
11
  n_neurons_2 = 128
12
12
 
13
+ # random.seed(0) # Pythonの乱数シードを固定
14
+ # np.random.seed(0) # Numpyの乱数シードを固定
15
+ # tf.set_random_seed(0) # TensorFlowの乱数シードを固定
16
+
17
+ # セッションの開始
18
+ tf_sess = tf.InteractiveSession()
19
+ # tf_sess = tf.Session()
20
+
13
21
  random.seed(0) # Pythonの乱数シードを固定
14
22
  np.random.seed(0) # Numpyの乱数シードを固定
15
23
  tf.set_random_seed(0) # TensorFlowの乱数シードを固定
16
24
 
17
- # セッションの開始
18
- tf_sess = tf.InteractiveSession()
19
25
 
20
26
  scaler = StandardScaler() # 標準化
21
27
  scaler.fit(dat_train)

3

ソースコードの修正

2019/05/30 00:22

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -15,7 +15,7 @@
15
15
  tf.set_random_seed(0) # TensorFlowの乱数シードを固定
16
16
 
17
17
  # セッションの開始
18
- net = tf.InteractiveSession()
18
+ tf_sess = tf.InteractiveSession()
19
19
 
20
20
  scaler = StandardScaler() # 標準化
21
21
  scaler.fit(dat_train)
@@ -25,7 +25,7 @@
25
25
  # 中略(処理内容やパラメータは基本的に下記の参考URLと同じ)
26
26
  # 概要はdat_trainで学習してdat_testの予測値を出す
27
27
 
28
- net.close() # セッションを閉じる
28
+ tf_sess.close() # セッションを閉じる
29
29
  return ans # 結果を返す
30
30
  ```
31
31
  呼び出し部分

2

ソースコードにコメント追記

2019/05/30 00:21

投稿

Wind
Wind

スコア442

title CHANGED
File without changes
body CHANGED
@@ -23,6 +23,7 @@
23
23
  dat_test_std = scaler.transform(dat_test)
24
24
 
25
25
  # 中略(処理内容やパラメータは基本的に下記の参考URLと同じ)
26
+ # 概要はdat_trainで学習してdat_testの予測値を出す
26
27
 
27
28
  net.close() # セッションを閉じる
28
29
  return ans # 結果を返す

1

タイトル修正

2019/05/29 12:25

投稿

Wind
Wind

スコア442

title CHANGED
@@ -1,1 +1,1 @@
1
- TensorFlowのCPU演算、関数で呼び出す毎に違う結果になってしまう。
1
+ TensorFlowのCPU演算、関数で呼び出す毎に違う結果になってしまう。
body CHANGED
File without changes