teratail header banner
teratail header banner
質問するログイン新規登録

質問編集履歴

1

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

2018/12/21 09:12

投稿

ixajin
ixajin

スコア12

title CHANGED
File without changes
body CHANGED
@@ -32,7 +32,87 @@
32
32
  for result in results:
33
33
  print(result)
34
34
 
35
+ ```
35
36
 
37
+ ```Python
38
+ #coding:utf-8
39
+
40
+ import keras
41
+ from keras.utils import np_utils
42
+ from keras.models import Sequential
43
+ from keras.layers.convolutional import Conv2D, MaxPooling2D
44
+ from keras.layers.core import Dense, Dropout, Activation, Flatten
45
+ import numpy as np
46
+ from sklearn.model_selection import train_test_split
47
+ from PIL import Image
48
+ import glob
49
+ folder = ["Not_Skill","with_Skill"]
50
+ image_size = 50
51
+
52
+ X = []
53
+ Y = []
54
+ for index, name in enumerate(folder):
55
+ dir = "./" + name
56
+ files = glob.glob(dir + "/*.jpg")
57
+ for i, file in enumerate(files):
58
+ image = Image.open(file)
59
+ image = image.convert("RGB")
60
+ image = image.resize((image_size, image_size))
61
+ data = np.asarray(image)
62
+ X.append(data)
63
+ Y.append(index)
64
+
65
+ X = np.array(X)
66
+ Y = np.array(Y)
67
+ X = X.astype('float32')
68
+ X = X / 255.0
69
+ Y = np_utils.to_categorical(Y, 4)
70
+ X_train, X_test, y_train, y_test = train_test_split(X, Y, test_size=0.20)
71
+ model = Sequential()
72
+
73
+ model.add(Conv2D(32, (3, 3), padding='same',input_shape=X_train.shape[1:]))
74
+ model.add(Activation('relu'))
75
+ model.add(Conv2D(32, (3, 3)))
76
+ model.add(Activation('relu'))
77
+ model.add(MaxPooling2D(pool_size=(2, 2)))
78
+ model.add(Dropout(0.25))
79
+
80
+ model.add(Conv2D(64, (3, 3), padding='same'))
81
+ model.add(Activation('relu'))
82
+ model.add(Conv2D(64, (3, 3)))
83
+ model.add(Activation('relu'))
84
+ model.add(MaxPooling2D(pool_size=(2, 2)))
85
+ model.add(Dropout(0.25))
86
+
87
+ model.add(Flatten())
88
+ model.add(Dense(512))
89
+ model.add(Activation('relu'))
90
+ model.add(Dropout(0.5))
91
+ model.add(Dense(4))
92
+ model.add(Activation('softmax'))
93
+
94
+ # コンパイル
95
+ model.compile(loss='categorical_crossentropy',optimizer='SGD',metrics=['accuracy'])
96
+
97
+ from keras.callbacks import TensorBoard
98
+ tbcb = TensorBoard(log_dir='./graph',histogram_freq=0,write_graph=True)
99
+
100
+ history = model.fit(X_train, y_train,batch_size=32,epochs=1000, verbose=1,validation_data=(X_test,y_test),callbacks=[tbcb])
101
+
102
+ from keras.utils import plot_model
103
+ model_json = model.to_json()
104
+ with open('model.json', mode='w') as f:
105
+ f.write(model_json)
106
+
107
+ model.save_weights('weights.h5')
108
+
109
+ import pickle
110
+ with open("history.pickle", mode='wb') as f:
111
+ pickle.dump(history.history, f)
112
+ print(model.evaluate(X_test, y_test))
113
+
114
+ ```
115
+
36
116
  ### 試したこと
37
117
 
38
118
  target_sizeを(50,50)にした