我就废话不多说了,大家还是直接看代码吧~
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
41
42
43
44
45
46
47
48
49
50
|
import keras import numpy as np import matplotlib.pyplot as plt #Sequential 按顺序构成的模型 from keras.models import Sequential #Sequential是模型结构,输入层,隐藏层,输出层 #Dense 全连接层,Activation激活函数 from keras.layers import Dense,Activation from keras.optimizers import SGD x_data = np.linspace( - 0.5 , 0.5 , 200 ) #从-0.5到0.5范围内生成200个随机点 noise = np.random.normal( 0 , 0.02 ,x_data.shape) #生成和x_data形状一样的噪声 y_data = np.square(x_data) + noise #显示随机点 #plt.scatter(x_data,y_data) #plt.show() #构建一个顺序模型 model = Sequential() #1-10-1,添加一个隐藏层 model.add(Dense(units = 10 ,input_dim = 1 ,activation = 'relu' )) #units是隐藏层,输出维度,输出y,input_dim是输入维度,输入x #model.add(Activation('tanh'))#给这一层添加一个双曲正切激活函数tanh函数 model.add(Dense(units = 1 ,input_dim = 10 ,activation = 'relu' )) #input_dim可以不写,它可以识别到上一句的输出是10维 #model.add(Activation('tanh'))#给这一层添加一个双曲正切激活函数tanh函数 #定义优化器 sgd = SGD(lr = 0.3 ) #学习率提高到0.3,训练速度会加快 model. compile (optimizer = sgd,loss = 'mse' ) #编译这个模型,sgd是随机梯度下降法,优化器.mse是均方误差 #训练模型 for step in range ( 5001 ): #每次训练一个批次 cost = model.train_on_batch(x_data,y_data) #代价函数的值,其实就是loss #每500个batch打印一次cost值 if step % 500 = = 0 : print ( 'cost:' ,cost) #打印权值和偏置值 W,b = model.layers[ 0 ].get_weights() #线性回归,只有一层 print ( 'W:' ,W, 'b:' ,b) #x_data输入网络中,得到预测值y_pred y_pred = model.predict(x_data) #显示随机点s plt.scatter(x_data,y_data) #显示预测结果 plt.plot(x_data,y_pred, 'r-' ,lw = 3 ) #r-表示红色的线,lw表示线宽 plt.show() |
结果:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
|
cost: 0.0077051604 cost: 0.0004980223 cost: 0.00047812634 cost: 0.00047762066 cost: 0.00047761563 cost: 0.00047761557 cost: 0.0004776156 cost: 0.0004776156 cost: 0.0004776156 cost: 0.00047761566 cost: 0.0004776156 W: [[ 0.37828678 0.37509003 0.1847014 - 0.46519393 - 0.6347979 - 0.70865685 0.55382997 - 0.66780925 0.08229994 0.5980157 ]] b: [ - 0.00412499 - 0.01216194 0.01939214 - 0.03005166 - 0.00475936 - 0.00794064 - 0.00015427 - 0.01620528 0.08056344 - 0.01741577 ] |
以上这篇使用keras实现非线性回归(两种加激活函数的方式)就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持服务器之家。
原文链接:https://blog.csdn.net/iamcfb_/article/details/87461442