Fork me on GitHub

deep learning1

感知机补充

接着写

感知机的训练中,老师还提供了一部份资料,比如训练出$y=2x$

我们简要地看一下一次训练的结果:

bias x y w0 w1 yout y-yout adj0 adj1 alpha w0new w1new
1 0.512 1.023 0.719 0.403 0.926 0.977 0.977 0.500 0.7 0.788 0.438

进行很多次训练之后画出的图形:

预测的还是挺准确的

为什么需要bias?

概念上很好理解,bias就是将一个正比例函数变为了一次函数,这样不必每次都过原点,分类的准确性也就大大地提高了

多层感知机

一层的感知机是没办法处理异或问题的

所以需要增加隐藏层
就像下面这样:

这样就可以做到了:

感觉MLP的数学知识太过复杂了,暂时放着

keras

从栗子代码开始:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
from keras.models import Sequential

model = Sequential()
from keras.layers import Dense
'''
使用add来堆叠模型
'''
model.add(Dense(units=64, activation='relu', input_dim=100))
model.add(Dense(units=10, activation='softmax'))
'''
使用compile来配置学习过程
'''
model.compile(loss='categorical_crossentropy',
optimizer='sgd',
metrics=['accuracy'])
# x_train 和 y_train 是 Numpy 数组 -- 就像在 Scikit-Learn API 中一样。
model.fit(x_train, y_train, epochs=5, batch_size=32)
'''
评估模型
'''
loss_and_metrics = model.evaluate(x_test, y_test, batch_size=128)
classes = model.predict(x_test, batch_size=128)

Sequential

compile

在训练模型之前,需要配置学习过程,compile接收三个参数

  • 优化器optimizer
  • 损失函数loss
  • 评估标准metrics

一个个来看

  1. 优化器
    可以先实例化一个优化器对象,然后将它传入model.compile(),或者可以通过

  2. 损失函数

损失函数(或称目标函数、优化评分函数)是编译模型时所需的两个参数之一:

1
model.compile(loss='mean_squared_error', optimizer='sgd')

我们可以传递一个现有的损失函数名,或者一个tensorflow符号函数,有以下两个参数

  • y_true: 真实标签.
  • y_pred: 预测值,其shape与y_true相同

可用的损失函数:
mean_squared_error
mean_absolute_error

参考

神经网络中w,b参数的作用(为何需要偏置b的解释)
深度学习中偏移项bias的作用