回答編集履歴
4
修正
answer
CHANGED
@@ -25,4 +25,34 @@
|
|
25
25
|
|
26
26
|
TensorFlow 1.14.0 だと SVG でも正しい寸法で表示されましたが、最新の TensorFlow 2.2.0 だとローカルの Jupyter Notebook でも質問の画像のようになりました。
|
27
27
|
なので、TensorFlow のバグじゃないですかね?
|
28
|
-
SVG の中身比較したら、出力される SVG の中身が 1.14.0 と 2.2.0 で違っていました
|
28
|
+
SVG の中身比較したら、出力される SVG の中身が 1.14.0 と 2.2.0 で違っていました
|
29
|
+
|
30
|
+
## 追記
|
31
|
+
|
32
|
+
SVG の差分とると、2.2.0 では Graph の属性として 1.14.0 にはなかった dpi が設定されていました。
|
33
|
+
pydot オブジェクトを作成している `model_to_dot()` を見てみたら、`dpi=96` という引数があったので、これを None にしたら正しい寸法で表示されました。
|
34
|
+
|
35
|
+
```python
|
36
|
+
def model_to_dot(model,
|
37
|
+
show_shapes=False,
|
38
|
+
show_layer_names=True,
|
39
|
+
rankdir='TB',
|
40
|
+
expand_nested=False,
|
41
|
+
dpi=96,
|
42
|
+
subgraph=False)
|
43
|
+
```
|
44
|
+
|
45
|
+
```python
|
46
|
+
from IPython.display import Image, SVG
|
47
|
+
from tensorflow.keras.layers import Conv2D, Dense, Dropout, Flatten, MaxPooling2D
|
48
|
+
from tensorflow.keras.models import Sequential
|
49
|
+
from tensorflow.python.keras.utils.vis_utils import model_to_dot
|
50
|
+
|
51
|
+
|
52
|
+
model = Sequential()
|
53
|
+
model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=(28, 28, 1)))
|
54
|
+
G = model_to_dot(model, show_shapes=True, dpi=None) ## 変更箇所
|
55
|
+
svg = G.create(prog="dot", format="svg")
|
56
|
+
|
57
|
+
SVG(svg)
|
58
|
+
```
|
3
修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換
|
1
|
+
`pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換して、`IPython.display.Image()` を使えば、はみ出さないで表示できました。
|
2
2
|
|
3
3
|
```python
|
4
4
|
from IPython.display import Image
|
2
修正
answer
CHANGED
@@ -21,6 +21,8 @@
|
|
21
21
|
Image(G.create(prog="dot", format="png"))
|
22
22
|
```
|
23
23
|
|
24
|
+
## 追記
|
25
|
+
|
24
|
-
|
26
|
+
TensorFlow 1.14.0 だと SVG でも正しい寸法で表示されましたが、最新の TensorFlow 2.2.0 だとローカルの Jupyter Notebook でも質問の画像のようになりました。
|
27
|
+
なので、TensorFlow のバグじゃないですかね?
|
25
|
-
|
28
|
+
SVG の中身比較したら、出力される SVG の中身が 1.14.0 と 2.2.0 で違っていました
|
26
|
-
SVG に拘りがとくにないのであれば、上記のやり方でいいと思います。
|
1
修正
answer
CHANGED
@@ -1,4 +1,4 @@
|
|
1
|
-
`pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式
|
1
|
+
`pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換いsて、`IPython.display.Image()` を使えば、はみ出さないで表示できました。
|
2
2
|
|
3
3
|
```python
|
4
4
|
from IPython.display import Image
|