• Python深度学习13——Keras模型的可视化(神经网络结构图)


    报错问题 

    Failed to import pydot. You must `pip install pydot` and install graphviz


    我们在调用keras里面的高级API——plot_model(),去画神经网络的结构图的时候可能会遇到两个报错问题。

    第一个是说keras.utils里面不存在plot_model()这个用法。

    cannot import name 'plot_model' from 'keras.utils'

    这个问题好解决,因为keras里面确实没有plot_model()用法,但是他的好兄弟——TensorFlow里面有.....

    直接这样导入:

    from tensorflow.keras.utils import plot_model

    就可以了。

    第二个报错问题是:

    Failed to import pydot. You must `pip install pydot` and install graphviz

    意思是缺失两个包,一个pydot,一个graphviz。

    我查了很多文章,很多方法比较麻烦,都需要手动下载,手动配置环境变量,后来看到一个很简单的方法,并且也测试有效。

    直接在anaconda prompt里面:

    1. conda install graphviz
    2. conda install pydotplus

    就可以了,不过安装过程好像会给你装上很多额外的包.....不过不影响环境,神经网络还是一样能跑。


    画图测试

    导入包,构建一个网络。这个网络是Model类,采用函数API实现,稍微复杂点,可以看图就会清楚他的结构。

    导入包

    1. import pandas as pd
    2. import numpy as np
    3. import matplotlib.pyplot as plt
    4. import tensorflow as tf
    5. import keras
    6. from keras.preprocessing import sequence
    7. from keras.models import Sequential,Model
    8. from keras.layers import Dense,Input, Dropout, Embedding, Flatten,MaxPooling1D,Conv1D,SimpleRNN,LSTM,GRU,Multiply
    9. from keras.layers import Bidirectional,Activation,BatchNormalization
    10. from keras.layers.merge import concatenate
    11. from keras.callbacks import EarlyStopping
    12. from tensorflow.keras import regularizers
    13. from keras.utils.np_utils import to_categorical
    14. from tensorflow.keras import optimizers
    15. from tensorflow.keras.utils import plot_model

    定义模型:

    1. inputs = Input(name='inputs',shape=[64,100], dtype='float64')
    2. gru=Bidirectional(GRU(32,return_sequences=True,))(inputs)
    3. mlp = Dense(64,activation='relu')(gru)
    4. attention_probs = Dense(64, activation='softmax', name='attention_vec')(mlp)
    5. attention_mul = Multiply()([mlp, attention_probs])
    6. mlp = Dense(64)(attention_mul) #原始的全连接
    7. fla=Flatten()(mlp)
    8. output = Dense(2, activation='softmax')(fla)
    9. model = Model(inputs=[inputs], outputs=output)
    10. model.compile(loss="categorical_crossentropy", optimizer="adam", metrics=["accuracy"])

    画出图形:

    plot_model(model,'new_model.png',show_shapes=True)

    第一参数是神经网络模型,第二个参数是储存的图片名称,第三个是在图片上打印出每层的数据形状。

     用这种图就能很方便的展示组建的模型的架构,多输入多输出都行。

    show_shapes=True参数改为False,就可以简化展示图片,不打印形状。我这里换了一种结构的网络。

    plot_model(model,'model2.png',show_shapes=False)

     

  • 相关阅读:
    Fashion MNIST与分类算法
    java-net-php-python-jsp班导师助理业务管理信息系统计算机毕业设计程序
    Linux常见命令
    2022年5月20日最全摸鱼游戏导航
    QGIS编译(跨平台编译)之四十七:QGIS在Windows环境下编译
    决策树剪枝:解决模型过拟合【决策树、机器学习】
    微软和OpenAI正在开发AI芯片, 并计划下个月发布
    2022双十一激光投影仪哪个好?当贝激光投影系列 高品质大品牌更有保障
    线程池的使用
    Java网络编程-IO模型篇之从BIO、NIO、AIO到内核select、epoll剖析
  • 原文地址:https://blog.csdn.net/weixin_46277779/article/details/127125481