質問編集履歴
4
別の結果を追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -70,38 +70,17 @@
|
|
70
70
|
|
71
71
|
追記
|
72
72
|
-----
|
73
|
+
仕方ないので特徴ベクトルで学習させた全結合層と畳み込み層(imagenet学習済みResnet)を結合させてFine tuningを行ってみましたが、
|
74
|
+
不思議な結果になりました。
|
73
75
|
```python
|
76
|
+
model.evaluate(test_image, test_encord)
|
77
|
+
# [0.2531382454914993, 0.6142322]
|
74
|
-
model
|
78
|
+
model.fit(train_image, train_encord, epochs=3, batch_size=16,validation_split=0.1)
|
79
|
+
# 2160/2160 [==============================] - 93s 43ms/sample - loss: 1.5922 - total_acc: 0.2333 - val_loss: 0.2954 - val_total_acc: 0.5643
|
80
|
+
model.evaluate(test_image, test_encord)
|
81
|
+
# [0.2892280397343725, 0.54681647]
|
75
|
-
|
82
|
+
model.evaluate(train_image, train_encord)
|
76
|
-
pc = PCA(n_components=2).fit_transform(image_feature)
|
77
|
-
|
83
|
+
# [0.2311001866869706, 0.6222407]
|
78
|
-
plt.scatter(pc1, pc2, c=np.sum(encorded,axis=1), cmap="jet")
|
79
|
-
plt.colorbar()
|
80
|
-
plt.show()
|
81
84
|
```
|
82
|
-
preprocess無し
|
83
|
-

|
84
|
-
preprocessあり
|
85
|
-

|
86
|
-
---
|
87
|
-
Preprocess_inputの検証
|
88
|
-
```python
|
89
|
-
resnet.preprocess_input(image_array)
|
90
|
-
train_image, test_image, train_score, test_score = train_test_split(image_array, encorded, test_size=0.1, random_state=100)
|
91
|
-
conv_model = resnet.ResNet152(weights='imagenet', include_top=False, pooling="avg",input_shape=(224,224,3))
|
92
|
-
conv_model.trainable = False
|
93
|
-
|
94
|
-
top_model = Sequential()
|
95
|
-
top_model.add(Input(2048))
|
96
|
-
top_model.add(Dense(256, activation="relu"))
|
97
|
-
top_model.add(Dropout(0.5))
|
98
|
-
|
85
|
+
悪い方向に学習するだけでなく、進捗で表示される結果とevaluateの結果が異なる等、何が起きているのか良く分かりません。
|
99
|
-
|
100
|
-
model = Sequential([conv_model,top_model])
|
101
|
-
|
102
|
-
model.compile(optimizer="adam",
|
103
|
-
loss="binary_crossentropy",
|
104
|
-
metrics=[total_acc])
|
105
|
-
|
86
|
+
バグのような気もしてきたので環境を変えてみようかと思いますが、質問は数日で打ち切らせていただき、Tensorflowのコミュニティで聞いてみることにします。ありがとうございました。
|
106
|
-
```
|
107
|
-

|
3
Preprocess_inputの検証を追加
title
CHANGED
File without changes
|
body
CHANGED
@@ -82,4 +82,26 @@
|
|
82
82
|
preprocess無し
|
83
83
|

|
84
84
|
preprocessあり
|
85
|
-

|
85
|
+

|
86
|
+
---
|
87
|
+
Preprocess_inputの検証
|
88
|
+
```python
|
89
|
+
resnet.preprocess_input(image_array)
|
90
|
+
train_image, test_image, train_score, test_score = train_test_split(image_array, encorded, test_size=0.1, random_state=100)
|
91
|
+
conv_model = resnet.ResNet152(weights='imagenet', include_top=False, pooling="avg",input_shape=(224,224,3))
|
92
|
+
conv_model.trainable = False
|
93
|
+
|
94
|
+
top_model = Sequential()
|
95
|
+
top_model.add(Input(2048))
|
96
|
+
top_model.add(Dense(256, activation="relu"))
|
97
|
+
top_model.add(Dropout(0.5))
|
98
|
+
top_model.add(Dense(4, activation="sigmoid"))
|
99
|
+
|
100
|
+
model = Sequential([conv_model,top_model])
|
101
|
+
|
102
|
+
model.compile(optimizer="adam",
|
103
|
+
loss="binary_crossentropy",
|
104
|
+
metrics=[total_acc])
|
105
|
+
history = model.fit(train_image, train_score, epochs=20, batch_size=16,validation_split=0.1)
|
106
|
+
```
|
107
|
+

|
2
コードミスを修正
title
CHANGED
File without changes
|
body
CHANGED
@@ -43,9 +43,6 @@
|
|
43
43
|
top_model.add(Dense(256, activation="relu"))
|
44
44
|
top_model.add(Dropout(0.5))
|
45
45
|
top_model.add(Dense(4, activation="sigmoid"))
|
46
|
-
top_model.compile(optimizer="adam",
|
47
|
-
loss="binary_crossentropy",
|
48
|
-
metrics=[total_acc])
|
49
46
|
|
50
47
|
model = Sequential([conv_model,top_model])
|
51
48
|
|
1
preprocess_input有無の差について追記
title
CHANGED
File without changes
|
body
CHANGED
@@ -69,4 +69,20 @@
|
|
69
69
|
この2つのモデルの違い、精度を上げる方法、コードの不適切な点等、ご教授いただきたいです。
|
70
70
|
|
71
71
|
tensorflow version2.1.0のtf.kerasを使っています。
|
72
|
-
宜しくお願いします。
|
72
|
+
宜しくお願いします。
|
73
|
+
|
74
|
+
追記
|
75
|
+
-----
|
76
|
+
```python
|
77
|
+
model = resnet.ResNet152(weights='imagenet', include_top=False, pooling="avg")
|
78
|
+
image_feature = model.predict(image_data, verbose=1)
|
79
|
+
pc = PCA(n_components=2).fit_transform(image_feature)
|
80
|
+
pc1, pc2 = pc[:,0],pc[:,1]
|
81
|
+
plt.scatter(pc1, pc2, c=np.sum(encorded,axis=1), cmap="jet")
|
82
|
+
plt.colorbar()
|
83
|
+
plt.show()
|
84
|
+
```
|
85
|
+
preprocess無し
|
86
|
+

|
87
|
+
preprocessあり
|
88
|
+

|