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

回答編集履歴

4

修正

2020/05/08 17:09

投稿

tiitoi
tiitoi

スコア21960

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

修正

2020/05/08 17:09

投稿

tiitoi
tiitoi

スコア21960

answer 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
  ```python
4
4
  from IPython.display import Image

2

修正

2020/05/08 16:46

投稿

tiitoi
tiitoi

スコア21960

answer CHANGED
@@ -21,6 +21,8 @@
21
21
  Image(G.create(prog="dot", format="png"))
22
22
  ```
23
23
 
24
+ ## 追記
25
+
24
- ローカルの JupyterNotebook だと SVG でも正しい縮尺で表示できましたが、Google Colab だと確かに質問のようになりますね
26
+ TensorFlow 1.14.0 だと SVG でも正しい寸法で表示されましたが、最新の TensorFlow 2.2.0 だとローカルの Jupyter Notebook でも質問の画像のようになりました
27
+ なので、TensorFlow のバグじゃないですかね?
25
- iframe で埋め込まことや、CSS など Google Colab 側問題な気す。
28
+ SVG の中身比較したら、出力される SVG中身 1.14.0 と 2.2.0 で違っていした
26
- SVG に拘りがとくにないのであれば、上記のやり方でいいと思います。

1

修正

2020/05/08 16:46

投稿

tiitoi
tiitoi

スコア21960

answer 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
  ```python
4
4
  from IPython.display import Image