質問編集履歴

1

モデルについてのコードを追加

2018/12/21 09:12

投稿

ixajin
ixajin

スコア12

test CHANGED
File without changes
test CHANGED
@@ -66,6 +66,166 @@
66
66
 
67
67
 
68
68
 
69
+ ```
70
+
71
+
72
+
73
+ ```Python
74
+
75
+ #coding:utf-8
76
+
77
+
78
+
79
+ import keras
80
+
81
+ from keras.utils import np_utils
82
+
83
+ from keras.models import Sequential
84
+
85
+ from keras.layers.convolutional import Conv2D, MaxPooling2D
86
+
87
+ from keras.layers.core import Dense, Dropout, Activation, Flatten
88
+
89
+ import numpy as np
90
+
91
+ from sklearn.model_selection import train_test_split
92
+
93
+ from PIL import Image
94
+
95
+ import glob
96
+
97
+ folder = ["Not_Skill","with_Skill"]
98
+
99
+ image_size = 50
100
+
101
+
102
+
103
+ X = []
104
+
105
+ Y = []
106
+
107
+ for index, name in enumerate(folder):
108
+
109
+ dir = "./" + name
110
+
111
+ files = glob.glob(dir + "/*.jpg")
112
+
113
+ for i, file in enumerate(files):
114
+
115
+ image = Image.open(file)
116
+
117
+ image = image.convert("RGB")
118
+
119
+ image = image.resize((image_size, image_size))
120
+
121
+ data = np.asarray(image)
122
+
123
+ X.append(data)
124
+
125
+ Y.append(index)
126
+
127
+
128
+
129
+ X = np.array(X)
130
+
131
+ Y = np.array(Y)
132
+
133
+ X = X.astype('float32')
134
+
135
+ X = X / 255.0
136
+
137
+ Y = np_utils.to_categorical(Y, 4)
138
+
139
+ X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20)
140
+
141
+ model = Sequential()
142
+
143
+
144
+
145
+ model.add(Conv2D(32, (3, 3), padding='same',input_shape=X_train.shape[1:]))
146
+
147
+ model.add(Activation('relu'))
148
+
149
+ model.add(Conv2D(32, (3, 3)))
150
+
151
+ model.add(Activation('relu'))
152
+
153
+ model.add(MaxPooling2D(pool_size=(2, 2)))
154
+
155
+ model.add(Dropout(0.25))
156
+
157
+
158
+
159
+ model.add(Conv2D(64, (3, 3), padding='same'))
160
+
161
+ model.add(Activation('relu'))
162
+
163
+ model.add(Conv2D(64, (3, 3)))
164
+
165
+ model.add(Activation('relu'))
166
+
167
+ model.add(MaxPooling2D(pool_size=(2, 2)))
168
+
169
+ model.add(Dropout(0.25))
170
+
171
+
172
+
173
+ model.add(Flatten())
174
+
175
+ model.add(Dense(512))
176
+
177
+ model.add(Activation('relu'))
178
+
179
+ model.add(Dropout(0.5))
180
+
181
+ model.add(Dense(4))
182
+
183
+ model.add(Activation('softmax'))
184
+
185
+
186
+
187
+ # コンパイル
188
+
189
+ model.compile(loss='categorical_crossentropy',optimizer='SGD',metrics=['accuracy'])
190
+
191
+
192
+
193
+ from keras.callbacks import TensorBoard
194
+
195
+ tbcb = TensorBoard(log_dir='./graph',histogram_freq=0,write_graph=True)
196
+
197
+
198
+
199
+ history = model.fit(X_train, y_train,batch_size=32,epochs=1000, verbose=1,validation_data=(X_test,y_test),callbacks=[tbcb])
200
+
201
+
202
+
203
+ from keras.utils import plot_model
204
+
205
+ model_json = model.to_json()
206
+
207
+ with open('model.json', mode='w') as f:
208
+
209
+ f.write(model_json)
210
+
211
+
212
+
213
+ model.save_weights('weights.h5')
214
+
215
+
216
+
217
+ import pickle
218
+
219
+ with open("history.pickle", mode='wb') as f:
220
+
221
+ pickle.dump(history.history, f)
222
+
223
+ print(model.evaluate(X_test, y_test))
224
+
225
+
226
+
227
+ ```
228
+
69
229
 
70
230
 
71
231
  ### 試したこと