回答編集履歴

4

修正

2020/05/08 17:09

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -53,3 +53,63 @@
53
53
  なので、TensorFlow のバグじゃないですかね?
54
54
 
55
55
  SVG の中身比較したら、出力される SVG の中身が 1.14.0 と 2.2.0 で違っていました
56
+
57
+
58
+
59
+ ## 追記
60
+
61
+
62
+
63
+ SVG の差分とると、2.2.0 では Graph の属性として 1.14.0 にはなかった dpi が設定されていました。
64
+
65
+ pydot オブジェクトを作成している `model_to_dot()` を見てみたら、`dpi=96` という引数があったので、これを None にしたら正しい寸法で表示されました。
66
+
67
+
68
+
69
+ ```python
70
+
71
+ def model_to_dot(model,
72
+
73
+ show_shapes=False,
74
+
75
+ show_layer_names=True,
76
+
77
+ rankdir='TB',
78
+
79
+ expand_nested=False,
80
+
81
+ dpi=96,
82
+
83
+ subgraph=False)
84
+
85
+ ```
86
+
87
+
88
+
89
+ ```python
90
+
91
+ from IPython.display import Image, SVG
92
+
93
+ from tensorflow.keras.layers import Conv2D, Dense, Dropout, Flatten, MaxPooling2D
94
+
95
+ from tensorflow.keras.models import Sequential
96
+
97
+ from tensorflow.python.keras.utils.vis_utils import model_to_dot
98
+
99
+
100
+
101
+
102
+
103
+ model = Sequential()
104
+
105
+ model.add(Conv2D(32, kernel_size=(3, 3), activation="relu", input_shape=(28, 28, 1)))
106
+
107
+ G = model_to_dot(model, show_shapes=True, dpi=None) ## 変更箇所
108
+
109
+ svg = G.create(prog="dot", format="svg")
110
+
111
+
112
+
113
+ SVG(svg)
114
+
115
+ ```

3

修正

2020/05/08 17:09

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,4 +1,4 @@
1
- `pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換いsて、`IPython.display.Image()` を使えば、はみ出さないで表示できました。
1
+ `pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換て、`IPython.display.Image()` を使えば、はみ出さないで表示できました。
2
2
 
3
3
 
4
4
 

2

修正

2020/05/08 16:46

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -44,8 +44,12 @@
44
44
 
45
45
 
46
46
 
47
- ローカルの JupyterNotebook だと SVG でも正しい縮尺で表示できましたが、Google Colab だと確かに質問のようになりますね。
47
+ ## 追記
48
48
 
49
- iframe で埋め込まれてることや、CSS など Google Colab 側の問題な気がします。
50
49
 
50
+
51
+ TensorFlow 1.14.0 だと SVG でも正しい寸法で表示されましたが、最新の TensorFlow 2.2.0 だとローカルの Jupyter Notebook でも質問の画像のようになりました。
52
+
53
+ なので、TensorFlow のバグじゃないですかね?
54
+
51
- SVG に拘りがとくにないであば、上記やり方でいいと思いす。
55
+ SVG の中身比較したら、出力さる SVG 中身が 1.14.0 と 2.2.0 違っていました

1

修正

2020/05/08 16:46

投稿

tiitoi
tiitoi

スコア21956

test CHANGED
@@ -1,4 +1,4 @@
1
- `pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式で出力して、`IPython.display.Image` で出力すれば、はみ出さないで表示できました。
1
+ `pydot.Dot` オブジェクトを `create(prog="dot", format="png")` で png 形式に変換いsて、`IPython.display.Image()` を使えば、はみ出さないで表示できました。
2
2
 
3
3
 
4
4