質問編集履歴
23
しりたいことを編集
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
#知りたいこと
|
16
16
|
|
17
|
-
ループで同じデータを入れた時に毎回同じ予測値を得るには、
|
17
|
+
ループで同じデータを入れた時に毎回同じ予測値を得るには、他に固定すべき乱数シードがあるのでしょうか?
|
18
18
|
|
19
19
|
もしくはCPUでも全く同じ値にはならないのでしょうか?
|
20
20
|
|
22
ソースコードを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -26,7 +26,11 @@
|
|
26
26
|
|
27
27
|
#ソースコード(再現動作可能)
|
28
28
|
|
29
|
-
※
|
29
|
+
※7/20 [kerasで学習が再現できない人へ](https://qiita.com/okotaku/items/8d682a11d8f2370684c9)を参考に追記してみました。
|
30
|
+
|
31
|
+
※5/30 [sklearnボストンのデータセット]
|
32
|
+
|
33
|
+
(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/)を使用して、コピペで動作が再現出来る物に差し替えました。
|
30
34
|
|
31
35
|
犯罪発生数を目的変数にして他の説明変数で学習し、予測する形になっています。
|
32
36
|
|
@@ -34,6 +38,8 @@
|
|
34
38
|
|
35
39
|
```Python
|
36
40
|
|
41
|
+
import os
|
42
|
+
|
37
43
|
import pandas as pd
|
38
44
|
|
39
45
|
import numpy as np
|
@@ -92,6 +98,8 @@
|
|
92
98
|
|
93
99
|
|
94
100
|
|
101
|
+
os.environ['PYTHONHASHSEED'] = '0'
|
102
|
+
|
95
103
|
random.seed(0) # Pythonの乱数シードを固定
|
96
104
|
|
97
105
|
np.random.seed(0) # Numpyの乱数シードを固定
|
@@ -100,11 +108,17 @@
|
|
100
108
|
|
101
109
|
|
102
110
|
|
103
|
-
|
111
|
+
session_conf = tf.ConfigProto(
|
112
|
+
|
113
|
+
intra_op_parallelism_threads=1,
|
114
|
+
|
115
|
+
inter_op_parallelism_threads=1
|
116
|
+
|
117
|
+
)
|
104
118
|
|
105
119
|
# セッションの開始
|
106
120
|
|
107
|
-
tf_sess = tf.InteractiveSession()
|
121
|
+
tf_sess = tf.InteractiveSession(config=session_conf)
|
108
122
|
|
109
123
|
|
110
124
|
|
@@ -306,15 +320,9 @@
|
|
306
320
|
|
307
321
|
[参考URL](http://www.algo-fx-blog.com/tensorflow-neural-network-fx/)
|
308
322
|
|
309
|
-
|
310
|
-
|
311
|
-
##発生している警告
|
312
|
-
|
313
|
-
|
323
|
+
[kerasで学習が再現できない人へ](https://qiita.com/okotaku/items/8d682a11d8f2370684c9)
|
314
|
-
|
315
|
-
|
316
|
-
|
317
|
-
|
324
|
+
|
325
|
+
|
318
326
|
|
319
327
|
|
320
328
|
|
21
ライブラリのバージョン変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
TensorFlow(CPU)でループ毎に異なる予測値にな
|
1
|
+
TensorFlow(CPU)でループ毎に異なる予測値になってしまう
|
test
CHANGED
@@ -324,4 +324,4 @@
|
|
324
324
|
|
325
325
|
Python :3.6.4 64-bit(base:conda)
|
326
326
|
|
327
|
-
TensorFlow:1.1
|
327
|
+
TensorFlow:1.13.1
|
20
ソースコード調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -38,7 +38,7 @@
|
|
38
38
|
|
39
39
|
import numpy as np
|
40
40
|
|
41
|
-
from sklearn.preprocessing import MinMaxScaler
|
41
|
+
#from sklearn.preprocessing import MinMaxScaler
|
42
42
|
|
43
43
|
from sklearn.preprocessing import StandardScaler
|
44
44
|
|
19
表の削除
test
CHANGED
File without changes
|
test
CHANGED
@@ -10,32 +10,6 @@
|
|
10
10
|
|
11
11
|
|
12
12
|
|
13
|
-
###現在の予測値(1個目)のイメージ
|
14
|
-
|
15
|
-
|ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
|
16
|
-
|
17
|
-
|:-------:|:-----------:|:------------:|:------------:|
|
18
|
-
|
19
|
-
|i = 0| 100 | 100 | 100 |
|
20
|
-
|
21
|
-
|i = 1| 90 | 90 | 90 |
|
22
|
-
|
23
|
-
|i = 2| 120 | 120 | 120 |
|
24
|
-
|
25
|
-
|i = 3| 105 | 105 | 105 |
|
26
|
-
|
27
|
-
|i = 4| 130 | 130 | 130 |
|
28
|
-
|
29
|
-
|i = 5| 110 | 110 | 110 |
|
30
|
-
|
31
|
-
|i = 6| 125 | 125 | 125 |
|
32
|
-
|
33
|
-
|i = 7| 92 | 92 | 92 |
|
34
|
-
|
35
|
-
|i = 8| 96 | 96 | 96 |
|
36
|
-
|
37
|
-
|i = 9| 130 | 130 | 130 |
|
38
|
-
|
39
13
|
|
40
14
|
|
41
15
|
#知りたいこと
|
18
ソースコード調整
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
※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/)を使用して、コピペで動作が再現出来る物に差し替えました。
|
56
56
|
|
57
|
-
犯罪数を目的変数にして他の説明変数で学習し、予測する形になっています。
|
57
|
+
犯罪発生数を目的変数にして他の説明変数で学習し、予測する形になっています。
|
58
58
|
|
59
59
|
実行すると、予測値が毎回異なってしまいます。
|
60
60
|
|
@@ -310,13 +310,13 @@
|
|
310
310
|
|
311
311
|
pred_inv = ans[0] # 予測値
|
312
312
|
|
313
|
-
y_test_inv = ans[1] # 犯罪数
|
313
|
+
y_test_inv = ans[1] # 犯罪発生数
|
314
314
|
|
315
315
|
|
316
316
|
|
317
317
|
np.set_printoptions(suppress=True, formatter={'float': '{: 0.3f}'.format}) #printで指数表示を禁止する、小数点第三位まで表示
|
318
318
|
|
319
|
-
print('発生数:' , y_test_inv)
|
319
|
+
print('犯罪発生数:' , y_test_inv)
|
320
320
|
|
321
321
|
print('予測値:' , pred_inv)
|
322
322
|
|
17
知りたいことを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -42,6 +42,8 @@
|
|
42
42
|
|
43
43
|
ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?
|
44
44
|
|
45
|
+
もしくはCPUでも全く同じ値にはならないのでしょうか?
|
46
|
+
|
45
47
|
|
46
48
|
|
47
49
|
(TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
16
ソースコードの説明追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
※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/)を使用して、コピペで動作が再現出来る物に差し替えました。
|
54
54
|
|
55
|
-
犯罪数を他の説明変数で学習し、予測する形になっています。
|
55
|
+
犯罪数を目的変数にして他の説明変数で学習し、予測する形になっています。
|
56
56
|
|
57
57
|
実行すると、予測値が毎回異なってしまいます。
|
58
58
|
|
15
データセット説明のリンクを追加
test
CHANGED
File without changes
|
test
CHANGED
@@ -50,7 +50,7 @@
|
|
50
50
|
|
51
51
|
#ソースコード(再現動作可能)
|
52
52
|
|
53
|
-
※5/30 sklearnボストンのデータセットを使用して、コピペで動作が再現出来る物に差し替えました。
|
53
|
+
※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/)を使用して、コピペで動作が再現出来る物に差し替えました。
|
54
54
|
|
55
55
|
犯罪数を他の説明変数で学習し、予測する形になっています。
|
56
56
|
|
14
説明変更
test
CHANGED
File without changes
|
test
CHANGED
@@ -54,7 +54,7 @@
|
|
54
54
|
|
55
55
|
犯罪数を他の説明変数で学習し、予測する形になっています。
|
56
56
|
|
57
|
-
実行すると、予測値が毎回異な
|
57
|
+
実行すると、予測値が毎回異なってしまいます。
|
58
58
|
|
59
59
|
```Python
|
60
60
|
|
13
タグ変更
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
12
タグ追加
test
CHANGED
File without changes
|
test
CHANGED
File without changes
|
11
ソースコード変更
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
TensorFlow
|
1
|
+
TensorFlow(CPU)でループ毎に異なる予測値になる(5/30ソースコード変更)
|
test
CHANGED
@@ -1,18 +1,16 @@
|
|
1
1
|
#わからないこと
|
2
2
|
|
3
|
-
|
3
|
+
TensorFlow(CPU版)で同じデータを渡して学習し予測しても、ループ毎に異なる予測値になってしまいます。
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
|
5
|
+
|
6
|
+
|
7
|
-
プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数を
|
7
|
+
プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数をループさせると毎回異なる値になります。(初期化が足りないのでしょうか?)
|
8
|
-
|
9
|
-
関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
|
10
8
|
|
11
9
|
当然ですがデータのシャッフルは行わず、常に同一データを入れています。
|
12
10
|
|
13
11
|
|
14
12
|
|
15
|
-
###現在の
|
13
|
+
###現在の予測値(1個目)のイメージ
|
16
14
|
|
17
15
|
|ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
|
18
16
|
|
@@ -42,21 +40,73 @@
|
|
42
40
|
|
43
41
|
#知りたいこと
|
44
42
|
|
45
|
-
ループで同じデータを入れた
|
43
|
+
ループで同じデータを入れた時に毎回同じ予測値を得るには、どうしたら良いのでしょうか?
|
46
|
-
|
47
|
-
|
48
|
-
|
44
|
+
|
45
|
+
|
46
|
+
|
49
|
-
(TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ
|
47
|
+
(TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ予測値になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
50
|
-
|
51
|
-
|
52
|
-
|
48
|
+
|
49
|
+
|
50
|
+
|
53
|
-
#ソースコード
|
51
|
+
#ソースコード(再現動作可能)
|
52
|
+
|
54
|
-
|
53
|
+
※5/30 sklearnボストンのデータセットを使用して、コピペで動作が再現出来る物に差し替えました。
|
54
|
+
|
55
|
+
犯罪数を他の説明変数で学習し、予測する形になっています。
|
56
|
+
|
55
|
-
|
57
|
+
実行すると、予測値が毎回異なります。
|
56
58
|
|
57
59
|
```Python
|
58
60
|
|
61
|
+
import pandas as pd
|
62
|
+
|
63
|
+
import numpy as np
|
64
|
+
|
65
|
+
from sklearn.preprocessing import MinMaxScaler
|
66
|
+
|
67
|
+
from sklearn.preprocessing import StandardScaler
|
68
|
+
|
69
|
+
import tensorflow as tf
|
70
|
+
|
71
|
+
import random
|
72
|
+
|
73
|
+
|
74
|
+
|
75
|
+
# サンプルデータセット(ボストン)
|
76
|
+
|
77
|
+
from sklearn.datasets import load_boston
|
78
|
+
|
79
|
+
boston = load_boston()
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
|
84
|
+
|
85
|
+
#y_bos = pd.DataFrame( boston.target) # 価格は使用しない
|
86
|
+
|
87
|
+
pd_bos = pd.DataFrame(boston.data, columns=boston.feature_names)
|
88
|
+
|
89
|
+
|
90
|
+
|
91
|
+
bos_test = pd_bos.iloc[0:100, :] # 行 0~100をテストデータにする
|
92
|
+
|
93
|
+
bos_train = pd_bos.iloc[100:500, :] # 行 101~500を訓練データにする
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
data_columns = bos_train.columns.values[1:] # 説明変数の名前を取得(犯罪数CRIMは目的変数とするので除外)
|
98
|
+
|
99
|
+
#print('説明変数:%s' % data_columns) # 説明変数を表示
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
|
104
|
+
|
105
|
+
# DL関数(学習データ, テストデータ)
|
106
|
+
|
107
|
+
# 返り値:予測値, 犯罪数
|
108
|
+
|
59
|
-
def tf_cross(
|
109
|
+
def tf_cross(val_train, val_test):
|
60
110
|
|
61
111
|
# ニューロンの数を設定
|
62
112
|
|
@@ -66,6 +116,22 @@
|
|
66
116
|
|
67
117
|
|
68
118
|
|
119
|
+
random.seed(0) # Pythonの乱数シードを固定
|
120
|
+
|
121
|
+
np.random.seed(0) # Numpyの乱数シードを固定
|
122
|
+
|
123
|
+
tf.set_random_seed(0) # TensorFlowの乱数シードを固定
|
124
|
+
|
125
|
+
|
126
|
+
|
127
|
+
|
128
|
+
|
129
|
+
# セッションの開始
|
130
|
+
|
131
|
+
tf_sess = tf.InteractiveSession()
|
132
|
+
|
133
|
+
|
134
|
+
|
69
135
|
# random.seed(0) # Pythonの乱数シードを固定
|
70
136
|
|
71
137
|
# np.random.seed(0) # Numpyの乱数シードを固定
|
@@ -74,60 +140,188 @@
|
|
74
140
|
|
75
141
|
|
76
142
|
|
77
|
-
#
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
ran
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
t
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
s
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
143
|
+
#値を標準化
|
144
|
+
|
145
|
+
scaler = StandardScaler()
|
146
|
+
|
147
|
+
scaler.fit(val_train)
|
148
|
+
|
149
|
+
val_train_std = scaler.transform(val_train)
|
150
|
+
|
151
|
+
val_test_std = scaler.transform(val_test)
|
152
|
+
|
153
|
+
|
154
|
+
|
155
|
+
y_train_std = val_train_std[:, 0] # 訓練データの目的変数を取得(先頭列)
|
156
|
+
|
157
|
+
X_train_std = val_train_std[:, 1:] # 訓練データの説明変数を取得(2列目以降)
|
158
|
+
|
159
|
+
y_test_std = val_test_std[:, 0] # テストデータの目的変数
|
160
|
+
|
161
|
+
X_test_std = val_test_std[:, 1:] # テストデータの説明変数
|
162
|
+
|
163
|
+
|
164
|
+
|
165
|
+
# テストデータの目的変数を標準化から通常の値へ戻す
|
166
|
+
|
167
|
+
y_test = y_test_std.reshape(len(y_test_std), 1)
|
168
|
+
|
169
|
+
y_test_inv = np.concatenate((y_test, X_test_std), axis=1)
|
170
|
+
|
171
|
+
y_test_inv = scaler.inverse_transform(y_test_inv)
|
172
|
+
|
173
|
+
y_test_inv = y_test_inv[:, 0]
|
174
|
+
|
175
|
+
|
176
|
+
|
177
|
+
|
178
|
+
|
179
|
+
# 訓練データの特徴量の"数"を取得
|
180
|
+
|
181
|
+
n_stocks = X_train_std.shape[1] # shape[1]は列数
|
182
|
+
|
183
|
+
|
184
|
+
|
185
|
+
|
186
|
+
|
187
|
+
# プレースホルダーの作成
|
188
|
+
|
189
|
+
X = tf.placeholder(dtype=tf.float32, shape=[None, n_stocks])
|
190
|
+
|
191
|
+
Y = tf.placeholder(dtype=tf.float32, shape=[None])
|
192
|
+
|
193
|
+
|
194
|
+
|
195
|
+
|
196
|
+
|
197
|
+
# 初期化
|
198
|
+
|
199
|
+
sigma = 1
|
200
|
+
|
201
|
+
weight_initializer = tf.variance_scaling_initializer(mode="fan_avg", distribution="uniform", scale=sigma)
|
202
|
+
|
203
|
+
bias_initializer = tf.zeros_initializer()
|
204
|
+
|
205
|
+
|
206
|
+
|
207
|
+
# Hidden weights
|
208
|
+
|
209
|
+
W_hidden_1 = tf.Variable(weight_initializer([n_stocks, n_neurons_1]))
|
210
|
+
|
211
|
+
bias_hidden_1 = tf.Variable(bias_initializer([n_neurons_1]))
|
212
|
+
|
213
|
+
W_hidden_2 = tf.Variable(weight_initializer([n_neurons_1, n_neurons_2]))
|
214
|
+
|
215
|
+
bias_hidden_2 = tf.Variable(bias_initializer([n_neurons_2]))
|
216
|
+
|
217
|
+
|
218
|
+
|
219
|
+
|
220
|
+
|
221
|
+
# 出力の重み
|
222
|
+
|
223
|
+
W_out = tf.Variable(weight_initializer([n_neurons_2, 1])) # 2層
|
224
|
+
|
225
|
+
bias_out = tf.Variable(bias_initializer([1]))
|
226
|
+
|
227
|
+
|
228
|
+
|
229
|
+
# 隠れ層の設定(ReLU=活性化関数)(収束がすばやいが、極端な出力値が生成される可能性がある)
|
230
|
+
|
231
|
+
# hidden_1 = tf.nn.relu(tf.add(tf.matmul(X, W_hidden_1), bias_hidden_1))
|
232
|
+
|
233
|
+
# hidden_2 = tf.nn.relu(tf.add(tf.matmul(hidden_1, W_hidden_2), bias_hidden_2))
|
234
|
+
|
235
|
+
|
236
|
+
|
237
|
+
# 隠れ層の設定:活性化関数をシグモイド(極端な出力値が少ないが、収束が遅い)
|
238
|
+
|
239
|
+
hidden_1 = tf.nn.sigmoid(tf.add(tf.matmul(X, W_hidden_1), bias_hidden_1))
|
240
|
+
|
241
|
+
hidden_2 = tf.nn.sigmoid(tf.add(tf.matmul(hidden_1, W_hidden_2), bias_hidden_2))
|
242
|
+
|
243
|
+
|
244
|
+
|
245
|
+
# 出力層の設定
|
246
|
+
|
247
|
+
out = tf.transpose(tf.add(tf.matmul(hidden_2, W_out), bias_out))
|
248
|
+
|
249
|
+
|
250
|
+
|
251
|
+
# コスト関数
|
252
|
+
|
253
|
+
mse = tf.reduce_mean(tf.squared_difference(out, Y))
|
254
|
+
|
255
|
+
# 最適化関数
|
256
|
+
|
257
|
+
opt = tf.train.AdamOptimizer().minimize(mse)
|
258
|
+
|
259
|
+
# 全ての変数を初期化
|
260
|
+
|
261
|
+
tf_sess.run(tf.global_variables_initializer())
|
262
|
+
|
263
|
+
|
264
|
+
|
265
|
+
# ニューラルネットワークの設定
|
266
|
+
|
267
|
+
batch_size = 128
|
268
|
+
|
269
|
+
|
270
|
+
|
271
|
+
# 訓練開始 n回の反復処理
|
272
|
+
|
273
|
+
epochs = 100
|
274
|
+
|
275
|
+
for e in range(epochs):
|
276
|
+
|
277
|
+
tf_sess.run(opt, feed_dict={X: X_train_std, Y: y_train_std}) # 標準化されたデータで訓練
|
278
|
+
|
279
|
+
|
280
|
+
|
281
|
+
# テストデータで予測
|
282
|
+
|
283
|
+
pred_test = tf_sess.run(out, feed_dict = {X: X_test_std})
|
284
|
+
|
285
|
+
|
286
|
+
|
287
|
+
pred_test = np.concatenate((pred_test.T, X_test_std), axis=1)
|
288
|
+
|
289
|
+
pred_inv = scaler.inverse_transform(pred_test) # 標準化から戻す
|
290
|
+
|
291
|
+
pred_inv = pred_inv[:, 0] # 1行目だけ取り出す(予測値)
|
292
|
+
|
293
|
+
tf_sess.close() # セッションを閉じる
|
294
|
+
|
295
|
+
|
296
|
+
|
297
|
+
return pred_inv, y_test_inv # 予測値と犯罪数を返す
|
298
|
+
|
299
|
+
|
300
|
+
|
301
|
+
|
302
|
+
|
303
|
+
# ループ
|
304
|
+
|
305
|
+
for dat in data_columns: # カラム数-1でループ
|
306
|
+
|
307
|
+
ans = tf_cross(bos_train, bos_test) # ***同じデータを毎回渡しているだけなのに、毎回同じ結果にならない***
|
308
|
+
|
309
|
+
pred_inv = ans[0] # 予測値
|
310
|
+
|
311
|
+
y_test_inv = ans[1] # 犯罪数
|
312
|
+
|
313
|
+
|
314
|
+
|
315
|
+
np.set_printoptions(suppress=True, formatter={'float': '{: 0.3f}'.format}) #printで指数表示を禁止する、小数点第三位まで表示
|
316
|
+
|
317
|
+
print('発生数:' , y_test_inv)
|
318
|
+
|
319
|
+
print('予測値:' , pred_inv)
|
320
|
+
|
321
|
+
|
114
322
|
|
115
323
|
```
|
116
324
|
|
117
|
-
呼び出し部分
|
118
|
-
|
119
|
-
```Python
|
120
|
-
|
121
|
-
data_columns = data_train.columns.values[1:] # 項目名の取得
|
122
|
-
|
123
|
-
# data_trainとdata_testへの加工は一切無し(将来的には加工して比較する予定)
|
124
|
-
|
125
|
-
for dat in data_columns: # データの項目数でループ
|
126
|
-
|
127
|
-
ans = tf_cross(data_train, data_test) # 毎回同じデータを渡しているだけなのに、毎回異なる結果になる
|
128
|
-
|
129
|
-
```
|
130
|
-
|
131
325
|
|
132
326
|
|
133
327
|
|
10
表の修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -14,7 +14,7 @@
|
|
14
14
|
|
15
15
|
###現在の結果のイメージ
|
16
16
|
|
17
|
-
|ループ回数|
|
17
|
+
|ループ回数| 実行1回目 | 実行2回目 | 実行3回目 |
|
18
18
|
|
19
19
|
|:-------:|:-----------:|:------------:|:------------:|
|
20
20
|
|
9
表を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -9,6 +9,34 @@
|
|
9
9
|
関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
|
10
10
|
|
11
11
|
当然ですがデータのシャッフルは行わず、常に同一データを入れています。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
###現在の結果のイメージ
|
16
|
+
|
17
|
+
|ループ回数| 起動1回目 | 起動2回目 | 起動3回目 |
|
18
|
+
|
19
|
+
|:-------:|:-----------:|:------------:|:------------:|
|
20
|
+
|
21
|
+
|i = 0| 100 | 100 | 100 |
|
22
|
+
|
23
|
+
|i = 1| 90 | 90 | 90 |
|
24
|
+
|
25
|
+
|i = 2| 120 | 120 | 120 |
|
26
|
+
|
27
|
+
|i = 3| 105 | 105 | 105 |
|
28
|
+
|
29
|
+
|i = 4| 130 | 130 | 130 |
|
30
|
+
|
31
|
+
|i = 5| 110 | 110 | 110 |
|
32
|
+
|
33
|
+
|i = 6| 125 | 125 | 125 |
|
34
|
+
|
35
|
+
|i = 7| 92 | 92 | 92 |
|
36
|
+
|
37
|
+
|i = 8| 96 | 96 | 96 |
|
38
|
+
|
39
|
+
|i = 9| 130 | 130 | 130 |
|
12
40
|
|
13
41
|
|
14
42
|
|
8
知りたいことを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -18,7 +18,7 @@
|
|
18
18
|
|
19
19
|
|
20
20
|
|
21
|
-
(ニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
21
|
+
(TensorFlowのニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
22
22
|
|
23
23
|
|
24
24
|
|
7
知りたいことを追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -15,6 +15,10 @@
|
|
15
15
|
#知りたいこと
|
16
16
|
|
17
17
|
ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
(ニューラルネットワークを使用して学習して予測した時に、常に同じ結果になるサンプルが書かれたURLを教えて頂けるだけでも助かります。)
|
18
22
|
|
19
23
|
|
20
24
|
|
6
わからないことの詳細を追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -2,9 +2,19 @@
|
|
2
2
|
|
3
3
|
関数にTensorFlow(CPU版)を書いて、ループで毎回同じデータを渡しても、毎回異なる結果になってしまいます。
|
4
4
|
|
5
|
-
(プログラム実行時は毎回同じ値にはなりますが、プログラム内部で10回ループさせると10回全て異なる値になります。データのシャッフルは行っていません。)
|
6
5
|
|
6
|
+
|
7
|
+
プログラム実行時は毎回同じ値にはなりますが、プログラム内部で関数を10回ループさせると10回全て異なる値になります。
|
8
|
+
|
9
|
+
関数に教師データとテストデータを入れて、同じ教師データとテストデータで学習して予測値を出しています。
|
10
|
+
|
11
|
+
当然ですがデータのシャッフルは行わず、常に同一データを入れています。
|
12
|
+
|
13
|
+
|
14
|
+
|
15
|
+
#知りたいこと
|
16
|
+
|
7
|
-
ループで同じデータを入れたら同じ結果
|
17
|
+
ループで同じデータを入れたら同じ結果を得るには、どうしたら良いのでしょうか?
|
8
18
|
|
9
19
|
|
10
20
|
|
5
わからないことを修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -1,6 +1,8 @@
|
|
1
1
|
#わからないこと
|
2
2
|
|
3
3
|
関数にTensorFlow(CPU版)を書いて、ループで毎回同じデータを渡しても、毎回異なる結果になってしまいます。
|
4
|
+
|
5
|
+
(プログラム実行時は毎回同じ値にはなりますが、プログラム内部で10回ループさせると10回全て異なる値になります。データのシャッフルは行っていません。)
|
4
6
|
|
5
7
|
ループで同じデータを入れたら同じ結果になる様にするには、どうしたら良いのでしょうか?
|
6
8
|
|
@@ -86,6 +88,8 @@
|
|
86
88
|
|
87
89
|
|
88
90
|
|
91
|
+
|
92
|
+
|
89
93
|
##参考URL
|
90
94
|
|
91
95
|
[参考URL](http://www.algo-fx-blog.com/tensorflow-neural-network-fx/)
|
4
ソースコードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -22,6 +22,22 @@
|
|
22
22
|
|
23
23
|
|
24
24
|
|
25
|
+
# random.seed(0) # Pythonの乱数シードを固定
|
26
|
+
|
27
|
+
# np.random.seed(0) # Numpyの乱数シードを固定
|
28
|
+
|
29
|
+
# tf.set_random_seed(0) # TensorFlowの乱数シードを固定
|
30
|
+
|
31
|
+
|
32
|
+
|
33
|
+
# セッションの開始
|
34
|
+
|
35
|
+
tf_sess = tf.InteractiveSession()
|
36
|
+
|
37
|
+
# tf_sess = tf.Session()
|
38
|
+
|
39
|
+
|
40
|
+
|
25
41
|
random.seed(0) # Pythonの乱数シードを固定
|
26
42
|
|
27
43
|
np.random.seed(0) # Numpyの乱数シードを固定
|
@@ -29,10 +45,6 @@
|
|
29
45
|
tf.set_random_seed(0) # TensorFlowの乱数シードを固定
|
30
46
|
|
31
47
|
|
32
|
-
|
33
|
-
# セッションの開始
|
34
|
-
|
35
|
-
tf_sess = tf.InteractiveSession()
|
36
48
|
|
37
49
|
|
38
50
|
|
3
ソースコードの修正
test
CHANGED
File without changes
|
test
CHANGED
@@ -32,7 +32,7 @@
|
|
32
32
|
|
33
33
|
# セッションの開始
|
34
34
|
|
35
|
-
|
35
|
+
tf_sess = tf.InteractiveSession()
|
36
36
|
|
37
37
|
|
38
38
|
|
@@ -52,7 +52,7 @@
|
|
52
52
|
|
53
53
|
|
54
54
|
|
55
|
-
|
55
|
+
tf_sess.close() # セッションを閉じる
|
56
56
|
|
57
57
|
return ans # 結果を返す
|
58
58
|
|
2
ソースコードにコメント追記
test
CHANGED
File without changes
|
test
CHANGED
@@ -48,6 +48,8 @@
|
|
48
48
|
|
49
49
|
# 中略(処理内容やパラメータは基本的に下記の参考URLと同じ)
|
50
50
|
|
51
|
+
# 概要はdat_trainで学習してdat_testの予測値を出す
|
52
|
+
|
51
53
|
|
52
54
|
|
53
55
|
net.close() # セッションを閉じる
|
1
タイトル修正
test
CHANGED
@@ -1 +1 @@
|
|
1
|
-
TensorFlowのCPU演算
|
1
|
+
TensorFlowのCPU演算が、関数で呼び出す毎に違う結果になってしまう。
|
test
CHANGED
File without changes
|