自学内容网 自学内容网

Keras入门:一维线性回归问题

目录

一、一维变量线性回归

1. 数据生成

2. 建立训练模型

3. 作图

4. 完整代码


一、一维变量线性回归

1. 数据生成

import keras
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
x=np.linspace(0, 100, 30) #0~100之间,生成30个数
y=3*x +7 + np.random.randn(30) #30个服从正态分布的随机数
plt.scatter(x, y)

将数扩大,分布更随机:

y=3*x +7 + np.random.randn(30)*10

2. 建立训练模型

model = keras.Sequential() #Sequential->创建顺序模型实例(输入->输出)
from keras import layers #layers里面有dense层
model.add(layers.Dense(1, input_dim=1))#给模型添加层(单输入,单输出的全链接层)
model.summary()#打印模型的相关参数

输出如下:

Model: "sequential_2"

_________________________________________________________________

Layer (type)                 Output Shape              Param #   

=================================================================

dense_2 (Dense)              (None, 1)                 2         

=================================================================

Total params: 2

Trainable params: 2

Non-trainable params: 0

_________________________________________________________________

#编译模型(定义优化算法和优化的目标)
model.compile( optimizer='adam', loss='mse'  #定义损失函数为:最小化均方误差准则)


#训练模型
model.fit(x,y,epochs=3000)
......#开始计算,训练

#检验模型
model.predict(x)

......

3. 作图

plt.scatter(x, y, c='r') #原数据

plt.plot(x, model.predict(x))


4. 使用模型(数据预测)

model.predict([150])

4. 完整代码

Linear_01.py

import keras
import numpy as np
import matplotlib.pyplot as plt
#matplotlib inline
x = np.linspace(0, 100, 30)
y = 3*x + 7 + np.random.randn(30)*6
model = keras.Sequential()   #顺序模型
from keras import layers
model.add(layers.Dense(1, input_dim=1))
model.summary()
model.compile(optimizer='adam', loss='mse')
model.fit(x, y, epochs=3000)
model.predict(x)
plt.scatter(x, y, c='r')
plt.plot(x, model.predict(x))
model.predict([150])


原文地址:https://blog.csdn.net/qq_40088639/article/details/140726967

免责声明:本站文章内容转载自网络资源,如本站内容侵犯了原著者的合法权益,可联系本站删除。更多内容请关注自学内容网(zxcms.com)!