美文网首页
分形神经网络keras版代码测试

分形神经网络keras版代码测试

作者: Beansi | 来源:发表于2017-06-14 16:18 被阅读0次

    Resources

    代码来自github,这个是keras快速搭建的版本,并非作者的源码,但是已经实现了论文中的所有方法并测试得到了良好的准确率。
    paper:arXiv:FractalNet: Ultra-Deep Neural Networks without Residuals

    环境配置

    Windows10环境下,安装以下工具

    Miniconda3-4.2.12

    这是anaconda 的精简版本(不想装那么多包),而选择这个时间的版本是因为tensorflow只支持python3.5.x,再往后的版本就是支持python3.6了。
    下载完成后的操作参考 清华数据源,更新了镜像,以提高下载速度,并顺手添加了额外几个源

    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
    conda config --set show_channel_urls yes
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
    conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
    

    但就算如此,也会遇到HTTPERROR的情况,说找不到这个网址,原因是因为.condarc文件中这个网址多了几个引号,如下

    channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
      - '''https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/'''
      - defaults
    ssl_verify: true
    show_channel_urls: true
    

    解决方案是删去即可,如下:

    channels:
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/msys2/
      - https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
      - defaults
    ssl_verify: true
    show_channel_urls: true
    

    创建neuralnets环境

    参照stackoverflow创建了一个neuralnets环境专门用于深度学习实验,打开anaconda prompt命令如下:

    C:\conda create --name neuralnets python=3.5
    

    按照要求输入y,以安装必要的内容

    C:\activate neuralnets
    

    在激活环境以后,安装必要的包

    (neuralnets) C:\conda install theano
    (neuralnets) C:\conda install mingw libpython
    (neuralnets) C:\pip install tensorflow
    (neuralnets) C:\pip install keras
    

    按照这个安装顺序安装成功,而后测试

    (neuralnets) C:\python -c "from keras import backend; print(backend._BACKEND)"
    

    不会报错就说明已经成功。

    keras可视化工具

    但是我们会发现直接对代码进行测试会发现安装了keras还会报错

    ImportError: No module named 'keras.utils.visualize_util'
    

    原因是缺少可视化包,参考博客
    为运行程序安装必要的keras可视化包。

    pip install graphviz
    

    而后去官网下载graphvic2.38下载.msi版本安装完成后,将Graphvix2.38/bin加入path中,在anaconda prompt中输入

    pip install pydot
    pip install pydotplus
    pip install pydot_ng 
    

    不用在意博客中提到的版本问题,因为keras中已经修正了这个包,也就是说我们待会还是要改代码,因为即keras.utils.visualize_util 了,改成了keras.utils.vis_utils了,同时plot包也改成了plot_model,这里参考了另一个博客。安装完环境以后,重启anaconda prompt
    使用上面博客中的测试

    from keras.models import Sequential
    from keras.layers import LSTM, Dense
    #这一行新加的,用于导入绘图包
    from keras.utils.vis_utils import plot_model
    
    import numpy as np
    data_dim = 16
    timesteps = 8
    num_classes = 10
    
    # expected input data shape: (batch_size, timesteps, data_dim)
    model = Sequential()
    model.add(LSTM(32, return_sequences=True,
                   input_shape=(timesteps, data_dim)))  # returns a sequence of vectors of dimension 32
    model.add(LSTM(32, return_sequences=True))  # returns a sequence of vectors of dimension 32
    model.add(LSTM(32))  # return a single vector of dimension 32
    model.add(Dense(10, activation='softmax'))
    
    model.compile(loss='categorical_crossentropy',
                  optimizer='sgd',
                  metrics=['accuracy'])
    
    # Generate dummy training data
    x_train = np.random.random((1000, timesteps, data_dim))
    y_train = np.random.random((1000, num_classes))
    
    # Generate dummy validation data
    x_val = np.random.random((100, timesteps, data_dim))
    y_val = np.random.random((100, num_classes))
    
    model.fit(x_train, y_train,
              batch_size=64, epochs=1,
              validation_data=(x_val, y_val))
    #这一行新加的,用于绘图
    plot_model(model, to_file='model1.png',show_shapes=True)
    

    没有错误,在文件夹中会找到输出的图片


    model1.png-23.3kBmodel1.png-23.3kB

    说明keras安装成功。

    Test

    观察代码,会发现数据集已经被整合到了代码中,keras内部将自行整合并下载数据集进行试验。同时,根据刚才的发现,要修改代码,将三个文件进行修改

    from keras.utils.visulaze_util import plot
    

    改成

    from keras.utils.vis_utils import plot_model
    

    以及后面的plot改成plot_model,然后就可以跑了。

    相关文章

      网友评论

          本文标题:分形神经网络keras版代码测试

          本文链接:https://www.haomeiwen.com/subject/dyxeqxtx.html