質問編集履歴

4

タグの追加

2020/02/29 03:53

投稿

kokekkoko
kokekkoko

スコア4

test CHANGED
File without changes
test CHANGED
File without changes

3

詳細な記述

2020/02/29 03:53

投稿

kokekkoko
kokekkoko

スコア4

test CHANGED
File without changes
test CHANGED
@@ -4,7 +4,13 @@
4
4
 
5
5
  この3つの時系列データは各エクセルファイルによってデータ長が違うこともあり、input_shapeでエラーが出てしまいます。
6
6
 
7
+ 入力データのshapeは
8
+
9
+ (3,161), (3,149),(3, 167), (3, 186)...
10
+
11
+ などバラバラです。
12
+
7
- どのようにプログラムを変更したら良いか教えていただきたいです。
13
+ 特に, input_shapeの部分で、どのようにプログラムを変更したら良いか教えていただきたいです。
8
14
 
9
15
 
10
16
 

2

プログラム全文をのせました

2020/02/29 03:51

投稿

kokekkoko
kokekkoko

スコア4

test CHANGED
File without changes
test CHANGED
@@ -8,12 +8,186 @@
8
8
 
9
9
 
10
10
 
11
+ ```html
12
+
13
+ import numpy as np
14
+
15
+ import glob
16
+
17
+ import random
18
+
19
+ import matplotlib.pyplot as plt
20
+
21
+ import numpy as np
22
+
23
+ import pandas as pd
24
+
25
+ import xlrd
26
+
27
+ import tensorflow as tf
28
+
29
+ from keras.models import Sequential
30
+
31
+ from keras.layers.core import Dense
32
+
33
+ from keras.layers.recurrent import LSTM
34
+
35
+ from keras.optimizers import Adam
36
+
37
+ from sklearn.model_selection import train_test_split
38
+
39
+
40
+
41
+
42
+
43
+ ###################### 変更パラメータ######################
44
+
45
+ folder = ["file1","file2"]
46
+
47
+ input_dim = 2 # 入力データの次元数:実数値3個なので3を指定
48
+
49
+ n_hidden = 300 # 隠れ層
50
+
51
+ num_epochs=100 # エポック数
52
+
53
+ num_batch_size=96 # バッチサイズ
54
+
55
+ num_classes = 2 # 識別クラス数
56
+
57
+ ###################### 変更パラメータ######################
58
+
59
+
60
+
61
+
62
+
63
+ ###################### 入力データの最適化 ######################
64
+
65
+ X = []
66
+
67
+ Y = []
68
+
69
+ for index, name in enumerate(folder):
70
+
71
+ dir = "./" + name
72
+
73
+ files = glob.glob(dir + "/*.xlsx")
74
+
75
+ for i, file in enumerate(files):
76
+
77
+ envelope_data = pd.read_excel(file, header=None)
78
+
79
+ data = np.array(envelope_data )
80
+
81
+ X.append(data)
82
+
83
+ Y.append(i)
84
+
85
+
86
+
87
+ # 学習用データとテストデータの分割
88
+
89
+ X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20)
90
+
91
+ ###################### 入力データの最適化 ######################
92
+
93
+
94
+
95
+
96
+
97
+ output_dim = 1 # 出力データの次元数:同上
98
+
99
+ num_hidden_units = 128 # 隠れ層のユニット数
100
+
101
+ len_sequence = 200 # 時系列の長さ
102
+
103
+ learning_rate = 0.001 # 学習率
104
+
105
+ num_training_samples = 1000 # 学習データのサンプル数
106
+
107
+
108
+
109
+
110
+
111
+
112
+
11
113
  model = Sequential()
12
114
 
13
115
 
14
116
 
15
- model.add(LSTM(32, return_sequences=True, input_shape=(??,??)))
117
+ model.add(LSTM(32, return_sequences=True, input_shape=(?,?,?)))
16
118
 
17
119
  model.add(LSTM(8, return_sequences=True))
18
120
 
19
121
  model.add(Dense(2, activation='softmax'))
122
+
123
+
124
+
125
+ ###################### モデルの汎化性能評価 ######################
126
+
127
+ # モデルコンパイル
128
+
129
+ model.compile(loss='categorical_crossentropy', # 損失の基準は交差エントロピー誤差
130
+
131
+ optimizer='Adam', # 最適化アルゴリズムの選択
132
+
133
+ metrics=['accuracy']) # 学習評価として正解率を指定
134
+
135
+
136
+
137
+ # 実行。出力はなしで設定(verbose=0)。
138
+
139
+ # 実行。出力ありで設定(verbose=1)。
140
+
141
+ history = model.fit(X_train,
142
+
143
+ y_train,
144
+
145
+ batch_size=num_batch_size, # バッチサイズ
146
+
147
+ epochs=num_epochs, # エポック回数
148
+
149
+ verbose=1,
150
+
151
+ validation_data=(
152
+
153
+ X_test,
154
+
155
+ y_test))
156
+
157
+
158
+
159
+ plt.plot(history.history['accuracy'])
160
+
161
+ plt.title('model accuracy')
162
+
163
+ plt.xlabel('epoch') # x軸のラベルの設定
164
+
165
+ plt.ylabel('accuracy') # y軸のラベルの設定
166
+
167
+ plt.legend(['acc'], loc='lower right')
168
+
169
+ plt.show()
170
+
171
+ # テストデータに対するエポック毎のLossとAccuracy
172
+
173
+ score = model.evaluate(X_test, y_test, verbose=0)
174
+
175
+
176
+
177
+ ### 最終エポック時のLossとAccuracy ###
178
+
179
+ print('Test Loss:{0:.3f}'.format(score[0]))
180
+
181
+ print('Test accuracy:{0:.3}'.format(score[1]))
182
+
183
+ ```
184
+
185
+
186
+
187
+ エラー内容
188
+
189
+ ```html
190
+
191
+ Input 0 is incompatible with layer lstm_5: expected ndim=3, found ndim=4
192
+
193
+ ```

1

誤字の訂正

2020/02/28 06:15

投稿

kokekkoko
kokekkoko

スコア4

test CHANGED
File without changes
test CHANGED
@@ -2,7 +2,7 @@
2
2
 
3
3
  入力データは3つの時系列データを1つのエクセルデータに保存し、プログラム上で1つのデータとしてLSTMに入力します。
4
4
 
5
- この3つの時系列データは各エクセルファイルによってデータ長が違うこともあり、denseのinput_shapeでエラーが出てしまいます。
5
+ この3つの時系列データは各エクセルファイルによってデータ長が違うこともあり、input_shapeでエラーが出てしまいます。
6
6
 
7
7
  どのようにプログラムを変更したら良いか教えていただきたいです。
8
8