Keras试用 线性回归

第一次入门TensorFlow,然后先搞搞Keras。


装环境:

1
pip install tensorflow

没有合适版本的话,检查一下自己的pip是不是最新版的,python是32位还是64位。

入门代码:线性回归

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
import keras
from keras.models import Sequential
from keras.layers import Dense
import numpy as np

#生成训练集
#trX和trY表示训练用的1000个点二维坐标的x和y,类型是nparray
#trX中,有1000组数据,每组数据只有1个元素,所以下文中Dense的input_dim=1
trX = np.random.uniform(-100, 100, size=1000) #生成1000个在-100~100之间的随机数,返回一个nparray
trY = 5 * trX + 6 + np.random.randn(*trX.shape) * 0.2 #期望y=5x+6,并加入一点点随机波动

#实例化model为层次模型
model = Sequential()

#为模型添加layer
#本示例是RNN,所以使用Dense作为layer
#前一个Dense的output_dim必须和后一个的input_dim相同
#第一个Dense的input_dim必须等于训练集输入的每组元素数
#最后一个的output_dim必须等于训练集输出输出的每组元素数
model.add(Dense(input_dim=1, output_dim=200, init='uniform', activation='linear'))
model.add(Dense(input_dim=200, output_dim=1, init='uniform', activation='linear'))

#编译模型,准备训练
#optimizer是优化器,一般选adam
#loss是损失函数,一般使用mse(均方误差)即可
#loss越小,说明训练效果越好,但要小心过拟合
model.compile(optimizer='adam', loss='mse')

#训练
#trX处填写训练集输入,trY处填写训练集输出
#nb_epoch是迭代次数,verbose=1表示在控制台输出每次epoch的信息
model.fit(trX, trY, nb_epoch=200, verbose=1)

#np.array()要求传入一个list,返回一个nparray
#arr.tolist()要求arr是一个nparray,返回一个list
#model.predict要求传入一个nparray
l = np.array([3,1,-5,-23,-42,52]) #测试集
res = model.predict(l) #结果
print(l)
print(res)

--It's the end.Thanks for your read.--