質問編集履歴
1
使用しているソースの概要を追加しました。
test
CHANGED
File without changes
|
test
CHANGED
@@ -1 +1,103 @@
|
|
1
|
-
Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、
|
1
|
+
Pythonのkerasで機械学習を行っているのですが、グリッドサーチでパラメータを調整しているため、多重for文を構成してしまっております。なので、タイトルにもある警告文が発生してしまいます。調べたところ、for内で学習をさせてしまっていることで発生すると合ったのですが、自分がやりたいことの都合上、forループを削除できません。for文を介さずにパラメータサーチを行う方法があれば教えていただきたいです。
|
2
|
+
|
3
|
+
|
4
|
+
|
5
|
+
現状のソースの概要は以下の通りとなっております。
|
6
|
+
|
7
|
+
|
8
|
+
|
9
|
+
```Python
|
10
|
+
|
11
|
+
def NN(lr, epoch):
|
12
|
+
|
13
|
+
#学習に使用するデータのループ
|
14
|
+
|
15
|
+
for i in Sample:
|
16
|
+
|
17
|
+
#以下学習モデルの構築及び学習・評価
|
18
|
+
|
19
|
+
|
20
|
+
|
21
|
+
|
22
|
+
|
23
|
+
|
24
|
+
|
25
|
+
if __name__ == "__main__":
|
26
|
+
|
27
|
+
#予め作成した学習率及びエポック数のリストから値を選択
|
28
|
+
|
29
|
+
for lr in Param_lr:
|
30
|
+
|
31
|
+
for epoch in Param_epoch:
|
32
|
+
|
33
|
+
NN(lr, epoch)
|
34
|
+
|
35
|
+
```
|
36
|
+
|
37
|
+
|
38
|
+
|
39
|
+
上記のソースの通り、学習率及びエポック数に関してパラメータサーチを行い、更にNN()内で使用する学習データを決定するためのforループが存在します。パラメータサーチを行わない、Sampleのループを削除する以外での改善策を教えていただければ幸いです。
|
40
|
+
|
41
|
+
|
42
|
+
|
43
|
+
また、以下のコードで実行した際は警告文が出ませんでした。これは一体どうしてなのでしょうか?
|
44
|
+
|
45
|
+
|
46
|
+
|
47
|
+
```Python
|
48
|
+
|
49
|
+
import numpy as np
|
50
|
+
|
51
|
+
import matplotlib.pyplot as plt
|
52
|
+
|
53
|
+
from keras.models import Sequential
|
54
|
+
|
55
|
+
from keras.layers import Dense
|
56
|
+
|
57
|
+
|
58
|
+
|
59
|
+
|
60
|
+
|
61
|
+
x = np.linspace(-np.pi, np.pi).reshape(-1, 1)
|
62
|
+
|
63
|
+
t = np.sin(x)
|
64
|
+
|
65
|
+
def NN_test():
|
66
|
+
|
67
|
+
for i in range(0, 5):
|
68
|
+
|
69
|
+
# ニューラルネットワークの設定
|
70
|
+
|
71
|
+
n_in = 1 # 入力層のニューロン数
|
72
|
+
|
73
|
+
n_mid = 20 # 中間層のニューロン数
|
74
|
+
|
75
|
+
n_out = 1 # 出力層のニューロン数
|
76
|
+
|
77
|
+
|
78
|
+
|
79
|
+
batch_size = 8 # バッチサイズ
|
80
|
+
|
81
|
+
|
82
|
+
|
83
|
+
# 入力層、中間層、出力層の3層のニューラルネットワークを構築
|
84
|
+
|
85
|
+
model = Sequential()
|
86
|
+
|
87
|
+
model.add(Dense(n_mid, input_shape=(n_in,), activation="sigmoid")) # 活性化関数にシグモイド関数
|
88
|
+
|
89
|
+
model.add(Dense(n_out, activation="linear")) # 活性化関数に恒等関数
|
90
|
+
|
91
|
+
model.compile(loss="mean_squared_error", optimizer="sgd") # 損失関数に二乗誤差、最適化アルゴリズムにSGDを使用してコンパイル
|
92
|
+
|
93
|
+
history = model.fit(x, t, batch_size=batch_size, epochs=10, validation_split=0.1) # 10%のデータを検証用に使う
|
94
|
+
|
95
|
+
|
96
|
+
|
97
|
+
if __name__ == "__main__":
|
98
|
+
|
99
|
+
NN_test()
|
100
|
+
|
101
|
+
|
102
|
+
|
103
|
+
```
|