最近在准备毕业设计,但是模型的数据太少,所以容易出错,我就来简单学习一下模型的结构。
写一个简单的深度学习模型:
环境:vscode,python 3.9.6 , window 11
需要安装的库:
import numpy as np
import matplotlib.pyplot as plt
import keras
from keras.layers import Dense
我这里使用pip insatll 安装总是失败,所以我都是采用镜像安装,清华镜像挺好用的
pip install numpy -i https://pypi.tuna.tsinghua.edu.cn/simple #安装numpy
pip install -i https://mirrors.aliyun.com/pypi/simple/ matplotlib #matplotlib安装
pip3 install -i https://mirrors.aliyun.com/pypi/simple/ keras #keras安装
一般不用特地安装pip,如果安装不成功,就安装一个pip
代码部分:
import numpy as np
import matplotlib.pyplot as plt
from keras.models import Sequential
from keras.layers import Dense
#从Keras库中导入`Dense`类。`Dense`是一个常用的神经网络层,代表一个全连接层。
# 定义数据点的数量
num_points = 1200
# 定义线性模型的参数
a = 2
b = 1
# 生成 x 值
x = np.linspace(-1, 1, num_points) #使用linspace函数在-1到1这个区间里面取值
# 生成噪声
noise = np.random.normal(0.0, 0.04, size=x.shape)
# 计算 y 值
y = a * x + b + noise
# 绘制输入数据
plt.plot(x, y, 'o')
plt.title('Input data')
plt.xlabel('x')
plt.ylabel('y')
plt.show()
# 如果打算用这些数据来训练一个模型,可以继续如下:
model = Sequential()
model.add(Dense(1, input_dim=1, activation='linear'))
# 编译模型 编译模型,设置损失函数为均方误差(MSE),优化器为随机梯度下降(SGD)
model.compile(loss='mean_squared_error', optimizer='sgd')
# 将数据转换为适合训练的形状
x_train = x.reshape(-1, 1)
y_train = y.reshape(-1, 1)
# 训练模型
model.fit(x_train, y_train, epochs=10)
运行程序会出现图片,图片结束以后,就可以看到我们训练的模型了,模型里面有一些参数:
这里是每个训练周期后损失函数的值:
Epoch 1: loss: 3.5201
Epoch 2: loss: 1.9141
Epoch 3: loss: 1.1080
Epoch 4: loss: 0.6560
Epoch 5: loss: 0.3934
Epoch 6: loss: 0.2364
Epoch 7: loss: 0.1425
Epoch 8: loss: 0.0861
Epoch 9: loss: 0.0525
Epoch 10: loss: 0.0322
损失函数的值随着训练周期的增加而减少,这意味着模型正在逐渐学习如何更好地拟合数据。在每个周期结束时,模型的预测能力都有所提高,因为损失函数的值变小了。但是不能过小,不然容易过度拟合,当然,我们这个就是简单熟悉环境,然后训练第一个自己的模型,互相学习