回答編集履歴

3

d

2019/12/05 06:43

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -5,12 +5,6 @@
5
5
 
6
6
 
7
7
  ## 追記
8
-
9
-
10
-
11
- こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
12
-
13
- なお、Tensorflow に付属している Keras を使ってます。
14
8
 
15
9
 
16
10
 
@@ -36,16 +30,28 @@
36
30
 
37
31
  img = np.float32(img) / 255
38
32
 
39
- image_data = np.array([img for i in range(100)])
33
+ image_data = np.array([img for i in range(50)])
40
-
41
- print(image_data.shape)
42
34
 
43
35
 
44
36
 
45
- p1 = model.predict(image_data, batch_size=1)
37
+ base_model = Xception(include_top=True, weights="imagenet", input_shape=(299, 299, 3))
46
38
 
47
- p2 = model.predict(image_data, batch_size=32)
39
+ for i in range(100):
48
40
 
41
+ model = Model(inputs=base_model.input, outputs=base_model.layers[i + 2].output)
42
+
43
+
44
+
45
+ p1 = model.predict(image_data, batch_size=1)
46
+
47
+ p2 = model.predict(image_data, batch_size=32)
48
+
49
- print(np.allclose(p1, p2))
49
+ if not np.allclose(p1, p2, rtol=1e-03):
50
+
51
+ print(p1.ravel()[:10])
52
+
53
+ print(p2.ravel()[:10])
54
+
55
+ break
50
56
 
51
57
  ```

2

d

2019/12/05 06:43

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -9,6 +9,8 @@
9
9
 
10
10
 
11
11
  こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
12
+
13
+ なお、Tensorflow に付属している Keras を使ってます。
12
14
 
13
15
 
14
16
 

1

d

2019/12/05 06:02

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,3 +1,49 @@
1
1
  浮動小数点演算は[丸め誤差](https://ja.wikipedia.org/wiki/%E8%AA%A4%E5%B7%AE#%E4%B8%B8%E3%82%81%E8%AA%A4%E5%B7%AE)が発生するため、演算結果が同じかどうかを判定する際に `==` による厳密に同じかどうかの比較は普通行いません。
2
2
 
3
3
  numpy でしたら [numpy.allclose](https://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html) でおおよそ同じかどうかの比較が行えるので、こちらで判定するのがよいと思います。
4
+
5
+
6
+
7
+ ## 追記
8
+
9
+
10
+
11
+ こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
12
+
13
+
14
+
15
+ ```python
16
+
17
+ import numpy as np
18
+
19
+ from PIL import Image
20
+
21
+ from tensorflow.keras.applications import Xception
22
+
23
+ from tensorflow.keras.models import Model
24
+
25
+
26
+
27
+ # Xceptionモデル構築
28
+
29
+ model = Xception(include_top=True, weights="imagenet", input_shape=(299, 299, 3))
30
+
31
+
32
+
33
+ img = Image.open("sample.jpg").resize((299, 299))
34
+
35
+ img = np.float32(img) / 255
36
+
37
+ image_data = np.array([img for i in range(100)])
38
+
39
+ print(image_data.shape)
40
+
41
+
42
+
43
+ p1 = model.predict(image_data, batch_size=1)
44
+
45
+ p2 = model.predict(image_data, batch_size=32)
46
+
47
+ print(np.allclose(p1, p2))
48
+
49
+ ```