Keras 下搭建 CNN 和RNN
Keras 是一个兼容 Theano 和 Tensorflow 的神经网络高级包, 用它来组件一个神经网络更加快速, 几条语句就搞定了. 而且广泛的兼容性能使 在 Windows 和 MacOS 或者 Linux 上运行无阻碍。
对比一下用 Keras 搭建下面几个常用神经网络:
回归,RNN回归,分类,CNN分类, RNN分类, 自编码分类
它们的步骤差不多是一样的:
[导入模块并创建数据],[建立模型],[定义优化器],[激活模型],[训练模型],[检验模型],[可视化结果]
除了建立模型其它的步骤都大同小异。
模型代码网址:
https://github.com/MorvanZhou/tutorials/tree/master/kerasTUT
超详细学习视频网址:
https://morvanzhou.github.io/tutorials/machine-learning/keras/
- 回归
对一组数据进行拟合,也就是寻求一条回归直线,如下图所示:
代码如下:
build a neural network from
the 1st layer to the last layer
model = Sequential() model.add(Dense(output_dim=1, input_dim=1))
代码剖析如下:
(1)用 Sequential 建立 model
(2)用 model.add 添加神经层,添加的是 Dense 全连接神经层。
参数有两个,一个是输入数据和输出数据的维度,本代码的例子中 x 和 y 是一维的。如果需要添加下一个神经层的时候,不用再定义输入的纬度,因为它默认就把前一层的输出作为当前层的输入。在这个例子里,只需要一层就够了。
2. RNN回归
用 sin 函数预测 cos 数据,就是cos 数据可以用正弦函数来进行拟合。如下图所示:
会用到 LSTM 这个神经网络。
代码如下:
model = Sequential()
build a LSTM RNN
model.add(LSTM(
batch_input_shape=(BATCH_SIZE, TIME_STEPS, INPUT_SIZE),