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

回答編集履歴

4

補足追記

2020/11/08 23:10

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -34,7 +34,7 @@
34
34
  y = np.append(y, np.array([1], dtype = np.uint8)).reshape(-1,1)
35
35
  ```
36
36
 
37
- 以下のように修正して、Xを追記しき、Xのshapeが(120, 150, 150, 4)になるようにします。最初の次元が60回ループさせた積み重ね方向です。
37
+ 以下のように修正して、Xを追記しき、Xのshapeが(120, 150, 150, 4)になるようにします。最初の次元が60回ループ(×2画像)させた積み重ね方向です。また、yもOne-hotベクトル形式を積み重ねることで、shapeが(120, 2)になるのが正しいです。
38
38
 
39
39
  ```Python
40
40
  X = np.empty((0,150,150,4))

3

補足追記

2020/11/08 23:10

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -1,6 +1,8 @@
1
1
  エラーの意味は、model.fitにおけるx_trainの形式が違うということです。
2
- モデル定義のところが必要です。
2
+ またこ部分のエラーを取る、y_trainの形式も違ういうエラーが新たに出ます。クラス分類なで、解データは、1,0といったスカラー値ではなく、[1,0],[0,1]といった各素が各クラスのウエイト1になるようなOne-hotベクトル形式にすべきです。
3
3
 
4
+ まず、モデル定義のところの修正が必要です。
5
+
4
6
  ```Python
5
7
  model = Sequential()
6
8
  model.add(Conv2D(16, (3, 3),
@@ -15,7 +17,7 @@
15
17
  input_shape=(150, 150, 4), activation='relu'))
16
18
  ```
17
19
 
18
- また、上記の他に、forループでXが毎回上書きされているという間違いあります。
20
+ また、前処理において、yの形式を変更しましょう。さらに、上記の他に、forループでXが毎回上書きされているという間違いあります。
19
21
 
20
22
  ```Python
21
23
  for i in range(1, 61):
@@ -36,16 +38,15 @@
36
38
 
37
39
  ```Python
38
40
  X = np.empty((0,150,150,4))
39
- y = []
41
+ y = np.empty((0,2))
40
42
  for i in range(1, 61):
41
43
 
42
44
  (中略)
43
45
 
44
46
  p1 = imageio.imread(f"/Users/K/Downloads/hifu_photos/melano/melano-{i:03d}.png").reshape(150,150,4)
45
- y = np.append(y, np.array([0], dtype = np.uint8)).reshape(-1,1)
46
-
47
-
48
47
  p2 =imageio.imread(f"/Users/K/Downloads/hifu_photos/normal/normal-{i:03d}.png").reshape(150,150,4)
49
48
  X = np.vstack([X, np.stack([p1, p2])])
50
- y = np.append(y, np.array([1], dtype = np.uint8)).reshape(-1,1)
49
+ y = np.vstack([y, [[1, 0], [0, 1]]])
51
- ```
50
+ ```
51
+
52
+ できあがったモデルで予測をした場合、結果はベクトル形式ででてきます。各要素が、対応するクラスの予測可能性に相当します。

2

前処理の修正

2020/11/08 23:08

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -32,21 +32,20 @@
32
32
  y = np.append(y, np.array([1], dtype = np.uint8)).reshape(-1,1)
33
33
  ```
34
34
 
35
- 以下のように修正して、Xを追記していくようにしましょう
35
+ 以下のように修正して、Xを追記しき、Xのshapeが(120, 150, 150, 4)になるようにしま最初の次元が60回ループさせた積み重ね方向です。
36
36
 
37
37
  ```Python
38
+ X = np.empty((0,150,150,4))
39
+ y = []
38
40
  for i in range(1, 61):
39
41
 
40
42
  (中略)
41
43
 
42
44
  p1 = imageio.imread(f"/Users/K/Downloads/hifu_photos/melano/melano-{i:03d}.png").reshape(150,150,4)
43
- X = np.append(X, p1)
44
45
  y = np.append(y, np.array([0], dtype = np.uint8)).reshape(-1,1)
45
46
 
46
47
 
47
48
  p2 =imageio.imread(f"/Users/K/Downloads/hifu_photos/normal/normal-{i:03d}.png").reshape(150,150,4)
48
- X = np.append(X, p2)
49
+ X = np.vstack([X, np.stack([p1, p2])])
49
50
  y = np.append(y, np.array([1], dtype = np.uint8)).reshape(-1,1)
50
- ```
51
+ ```
51
-
52
- なお、`NameError: name 'X' is not defined`が出たら、forの前に`X = []`を入れてください。

1

誤字の修正

2020/11/08 22:58

投稿

toast-uz
toast-uz

スコア3266

answer CHANGED
@@ -7,7 +7,7 @@
7
7
  input_shape=(150, 150, 3), activation='relu'))
8
8
  ```
9
9
 
10
- 以下のように修して、RBGAの4次元に対応させます。
10
+ 以下のように修して、RBGAの4次元に対応させます。
11
11
 
12
12
  ```Python
13
13
  model = Sequential()