質問編集履歴
23
しりたいことを編集
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
ソースコードを修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -12,10 +12,13 @@
|
|
12
12
|
(TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
13
13
|
|
14
14
|
#ソースコード(再現動作可能)
|
15
|
-
※
|
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
ライブラリのバージョン変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
TensorFlow(CPU)でループ毎に異なる予測値にな
|
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.
|
164
|
+
TensorFlow:1.13.1
|
20
ソースコード調整
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
表の削除
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
ソースコード調整
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
知りたいことを追記
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
ソースコードの説明追加
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
データセット説明のリンクを追加
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
説明変更
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
タグ変更
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
12
タグ追加
title
CHANGED
File without changes
|
body
CHANGED
File without changes
|
11
ソースコード変更
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
TensorFlow
|
1
|
+
TensorFlow(CPU)でループ毎に異なる予測値になる(5/30ソースコード変更)
|
body
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
#わからないこと
|
2
|
-
|
2
|
+
TensorFlow(CPU版)で同じデータを渡して学習し予測しても、ループ毎に異なる予測値になってしまいます。
|
3
3
|
|
4
|
-
プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数を
|
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のニューラルネットワークを使用して学習して予測した時に、常に同じ
|
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(
|
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
|
-
|
73
|
+
scaler = StandardScaler()
|
74
|
+
scaler.fit(val_train)
|
75
|
+
val_train_std = scaler.transform(val_train)
|
41
|
-
|
76
|
+
val_test_std = scaler.transform(val_test)
|
42
77
|
|
43
|
-
random.seed(0) # Pythonの乱数シードを固定
|
44
|
-
|
78
|
+
y_train_std = val_train_std[:, 0] # 訓練データの目的変数を取得(先頭列)
|
79
|
+
X_train_std = val_train_std[:, 1:] # 訓練データの説明変数を取得(2列目以降)
|
45
|
-
|
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
|
-
#
|
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
|
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
表の修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -6,7 +6,7 @@
|
|
6
6
|
当然ですがデータのシャッフルは行わず、常に同一データを入れています。
|
7
7
|
|
8
8
|
###現在の結果のイメージ
|
9
|
-
|ループ回数|
|
9
|
+
|ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
|
10
10
|
|:-------:|:-----------:|:------------:|:------------:|
|
11
11
|
|i = 0| 100 | 100 | 100 |
|
12
12
|
|i = 1| 90 | 90 | 90 |
|
9
表を追記
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
知りたいことを追記
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
知りたいことを追記
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
わからないことの詳細を追記
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
わからないことを修正
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
ソースコードの修正
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
ソースコードの修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -15,7 +15,7 @@
|
|
15
15
|
tf.set_random_seed(0) # TensorFlowの乱数シードを固定
|
16
16
|
|
17
17
|
# セッションの開始
|
18
|
-
|
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
|
-
|
28
|
+
tf_sess.close() # セッションを閉じる
|
29
29
|
return ans # 結果を返す
|
30
30
|
```
|
31
31
|
呼び出し部分
|
2
ソースコードにコメント追記
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
タイトル修正
title
CHANGED
@@ -1,1 +1,1 @@
|
|
1
|
-
TensorFlowのCPU演算
|
1
|
+
TensorFlowのCPU演算が、関数で呼び出す毎に違う結果になってしまう。
|
body
CHANGED
File without changes
|