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

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.3kB
model1.png-23.3kB

说明keras安装成功。

Test

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

from keras.utils.visulaze_util import plot

改成

from keras.utils.vis_utils import plot_model

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

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容