Keras笔记(1)  入门

2017-04-02  本文已影响0人  无事扯淡

使用TensorFlow构建神经网络确实有些麻烦,中间层需要自己核算矩阵,这导致建模略微负责。这里使用Keras构建网络,它可以用TensorFlow作为后端。

1.安装

pip3 install keras

2.小试牛刀

playground例子
import numpy as np
import matplotlib.pyplot as plt
%matplotlib inline
x1 = np.random.rand(100,2)*6
x2 = np.random.rand(100,2)*-6
x_ = np.vstack((x1,x2))
y1 = np.ones((100,1))
y2 = np.zeros((100,1))
y_ = np.vstack((np.hstack((y1,y2)),np.hstack((y2,y1))))
from keras.models import Sequential
from keras.layers import Dense, Activation
model = Sequential()
model.add(Dense(1, input_dim=2))
model.add(Activation('relu'))
model.add(Dense(2))
model.add(Activation('softmax'))
model.compile(optimizer='rmsprop',
loss='categorical_crossentropy',
metrics=['accuracy'])
model.fit(x_, y_, nb_epoch=100, batch_size=20)

keras在构建每层网络的时候非常简单,这里的Dense相当于一层网络,这里把Activation(激活函数)分开写了,实际上可以写在一起。对于第一层网络必须要指定输入维度,中间层的维度不需要管就可以自动设置。模型建立之后要编译,编译过程需要指定损失函数和优化方法。训练使用的方法是fit。

from keras.utils import plot_model
plot_model(model, to_file='model.png')

这里的模型可视化需要pyplot,安装方法如下:

pip3 install pydot-ng
sudo apt-get install graphviz
h = model.fit(x_, y_, nb_epoch=100, batch_size=10)
plt.plot(h.epoch,h.history['loss'])
Paste_Image.png
bg = []
values = np.linspace(-6,6,num=50)
for i in range(50):
    bg.append([[values[i], v] for v in values])
xx = np.array(bg).reshape(2500,2).astype(np.float32)
out = model.predict(xx)
#out.shape = (2500,2)
out_classes = model.predict_classes(xx)
#out.shape = (2500,)

这里使用predict会给出概率参数,使用predict_classes则会计算出是哪个类别,可以通过查看shape参数看出这个区别。

上一篇 下一篇

猜你喜欢

热点阅读