回答編集履歴
3
d
answer
CHANGED
@@ -3,9 +3,6 @@
|
|
3
3
|
|
4
4
|
## 追記
|
5
5
|
|
6
|
-
こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
|
7
|
-
なお、Tensorflow に付属している Keras を使ってます。
|
8
|
-
|
9
6
|
```python
|
10
7
|
import numpy as np
|
11
8
|
from PIL import Image
|
@@ -17,10 +14,16 @@
|
|
17
14
|
|
18
15
|
img = Image.open("sample.jpg").resize((299, 299))
|
19
16
|
img = np.float32(img) / 255
|
20
|
-
image_data = np.array([img for i in range(
|
17
|
+
image_data = np.array([img for i in range(50)])
|
21
|
-
print(image_data.shape)
|
22
18
|
|
19
|
+
base_model = Xception(include_top=True, weights="imagenet", input_shape=(299, 299, 3))
|
20
|
+
for i in range(100):
|
21
|
+
model = Model(inputs=base_model.input, outputs=base_model.layers[i + 2].output)
|
22
|
+
|
23
|
-
p1 = model.predict(image_data, batch_size=1)
|
23
|
+
p1 = model.predict(image_data, batch_size=1)
|
24
|
-
p2 = model.predict(image_data, batch_size=32)
|
24
|
+
p2 = model.predict(image_data, batch_size=32)
|
25
|
-
|
25
|
+
if not np.allclose(p1, p2, rtol=1e-03):
|
26
|
+
print(p1.ravel()[:10])
|
27
|
+
print(p2.ravel()[:10])
|
28
|
+
break
|
26
29
|
```
|
2
d
answer
CHANGED
@@ -4,6 +4,7 @@
|
|
4
4
|
## 追記
|
5
5
|
|
6
6
|
こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
|
7
|
+
なお、Tensorflow に付属している Keras を使ってます。
|
7
8
|
|
8
9
|
```python
|
9
10
|
import numpy as np
|
1
d
answer
CHANGED
@@ -1,2 +1,25 @@
|
|
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
|
-
numpy でしたら [numpy.allclose](https://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html) でおおよそ同じかどうかの比較が行えるので、こちらで判定するのがよいと思います。
|
2
|
+
numpy でしたら [numpy.allclose](https://docs.scipy.org/doc/numpy/reference/generated/numpy.allclose.html) でおおよそ同じかどうかの比較が行えるので、こちらで判定するのがよいと思います。
|
3
|
+
|
4
|
+
## 追記
|
5
|
+
|
6
|
+
こちらで下記のコードで確認しましたが、バッチサイズによらず結果は一致しました。
|
7
|
+
|
8
|
+
```python
|
9
|
+
import numpy as np
|
10
|
+
from PIL import Image
|
11
|
+
from tensorflow.keras.applications import Xception
|
12
|
+
from tensorflow.keras.models import Model
|
13
|
+
|
14
|
+
# Xceptionモデル構築
|
15
|
+
model = Xception(include_top=True, weights="imagenet", input_shape=(299, 299, 3))
|
16
|
+
|
17
|
+
img = Image.open("sample.jpg").resize((299, 299))
|
18
|
+
img = np.float32(img) / 255
|
19
|
+
image_data = np.array([img for i in range(100)])
|
20
|
+
print(image_data.shape)
|
21
|
+
|
22
|
+
p1 = model.predict(image_data, batch_size=1)
|
23
|
+
p2 = model.predict(image_data, batch_size=32)
|
24
|
+
print(np.allclose(p1, p2))
|
25
|
+
```
|