Resources
代碼來自github,這個是keras快速搭建的版本踢涌,并非作者的源碼椅棺,但是已經(jīng)實現(xiàn)了論文中的所有方法并測試得到了良好的準確率。
paper:arXiv:FractalNet: Ultra-Deep Neural Networks without Residuals
環(huán)境配置
Windows10環(huán)境下插佛,安裝以下工具
Miniconda3-4.2.12
這是anaconda 的精簡版本(不想裝那么多包),而選擇這個時間的版本是因為tensorflow只支持python3.5.x,再往后的版本就是支持python3.6了量窘。
下載完成后的操作參考 清華數(shù)據(jù)源雇寇,更新了鏡像,以提高下載速度蚌铜,并順手添加了額外幾個源
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的情況,說找不到這個網(wǎng)址冬殃,原因是因為.condarc文件中這個網(wǎng)址多了幾個引號囚痴,如下
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
創(chuàng)建neuralnets環(huán)境
參照stackoverflow創(chuàng)建了一個neuralnets環(huán)境專門用于深度學習實驗,打開anaconda prompt命令如下:
C:\conda create --name neuralnets python=3.5
按照要求輸入y审葬,以安裝必要的內容
C:\activate neuralnets
在激活環(huán)境以后深滚,安裝必要的包
(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)"
不會報錯就說明已經(jīng)成功涣觉。
keras可視化工具
但是我們會發(fā)現(xiàn)直接對代碼進行測試會發(fā)現(xiàn)安裝了keras還會報錯
ImportError: No module named 'keras.utils.visualize_util'
原因是缺少可視化包痴荐,參考博客,
為運行程序安裝必要的keras可視化包官册。
pip install graphviz
而后去官網(wǎng)下載graphvic2.38下載.msi版本安裝完成后生兆,將Graphvix2.38/bin加入path中,在anaconda prompt中輸入
pip install pydot
pip install pydotplus
pip install pydot_ng
不用在意博客中提到的版本問題攀隔,因為keras中已經(jīng)修正了這個包皂贩,也就是說我們待會還是要改代碼,因為即keras.utils.visualize_util 了栖榨,改成了keras.utils.vis_utils了昆汹,同時plot包也改成了plot_model,這里參考了另一個博客婴栽。安裝完環(huán)境以后满粗,重啟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)
沒有錯誤挤聘,在文件夾中會找到輸出的圖片
說明keras安裝成功。
Test
觀察代碼捅彻,會發(fā)現(xiàn)數(shù)據(jù)集已經(jīng)被整合到了代碼中组去,keras內部將自行整合并下載數(shù)據(jù)集進行試驗。同時步淹,根據(jù)剛才的發(fā)現(xiàn)从隆,要修改代碼,將三個文件進行修改
from keras.utils.visulaze_util import plot
改成
from keras.utils.vis_utils import plot_model
以及后面的plot改成plot_model缭裆,然后就可以跑了键闺。