TroubleShooting:OSError: pydot failed to call GraphViz.Please install GraphViz......

最近在使用Keras搭建CNN时使用到一个函数plot_model(),这个函数需要使用SVG将网络结构以.png的格式保存,但是在运行时出现错误提示:OSError: pydot failed to call GraphViz.Please install GraphViz (https://www.graphviz.org/) and ensure that its executables are in the $PATH.

解决步骤:

(1)安装graphviz-2.38.msi

GraphViz是.msi格式的,在下载的过程中有很多坑,在graphviz.org官网中download时各种报404,在百度搜索时大部分下载不了,最坑的是CSDN上的资源都需要积分,在此还是将我找到的百度云盘的链接贴在这里:https://pan.baidu.com/s/1MHOuCyNRYLFlpIuJfCv7ew,密码:g2cv  ,graphviz-2.38.msi的安装方式很简单:双击后,逐步选择‘next’,在选择安装路径的时候推荐安装到D盘。

(2)添加环境变量

安装好之后,需要在windows的系统变量中添加Path中。首先复制graphviz目录下bin文件夹的地址,如:D:\Program Files (x86)\Graphviz2.38\bin,然后‘’我的电脑‘’->右键->属性->高级系统设置->环境变量->编辑

(3)验证

安装完成后,在cmd中输入dot -version查看一下,是否安装成功。然后再次运行Keras的model。

def HappyModel(input_shape):
    X_input = Input(input_shape)
    X = ZeroPadding2D((3, 3))(X_input)
    X = Conv2D(32, (7, 7), strides = (1, 1), name = 'conv0')(X)
    X = BatchNormalization(axis = 3, name = 'bn0')(X)
    X = Activation('relu')(X)

    X = MaxPooling2D((2, 2), name = 'max_pool')(X)

    X = Flatten()(X)
    X = Dense(1, activation = 'sigmoid', name = 'fc')(X)

    model = Model(inputs = X_input, outputs = X, name='HappyModel')
    

    return model

happyModel = HappyModel(X_train.shape[1:])
happyModel.compile(optimizer = 'Adam', loss = 'binary_crossentropy', metrics = ["accuracy"])
happyModel.fit(x = X_train, y = Y_train, epochs = 10, batch_size = 32)

happyModel.summary()
print("done summary")
plot_model(happyModel, to_file='HappyModel.png', show_shapes=True)
SVG(model_to_dot(happyModel).create(prog='dot', format='svg'))

可见已经可以正常运行graphviz了。

Tips:如果在正确的进行前两部的配置仍然报错,那就非常有必要使出百试百灵的必杀技:重启电脑! 

猜你喜欢

转载自blog.csdn.net/u013093426/article/details/81164083