Keras人工智能神经网络 Regressor 回归 神经网络搭建

前期分享了使用tensorflow来进行神经网络的回归,tensorflow构建神经网络

本期我们来使用Keras来搭建一个简单的神经网络

Keras神经网络可以用来模拟回归问题 (regression),例如给下面一组数据,用一条线来对数据进行拟合,并可以预测新输入 x 的输出值,也就是线性回归问题(Y=w*X+b)

1创建随机数据

import numpy as np
np.random.seed(1337) # 随机数
from keras.models import Sequential # models.Sequential,用来一层一层的建立神经层
from keras.layers import Dense # layers.Dense 个神经层是全连接层
import matplotlib.pyplot as plt # 可视化模块

# 创建数据

X = np.linspace(-1, 1, 300)
np.random.shuffle(X) # 数据随机化
Y = 0.5 * X + 2 + np.random.normal(0, 0.05, (300, ))
# 显示创建的数据
plt.scatter(X, Y)
plt.show()
X_train, Y_train = X[:260], Y[:260] # train 前 260 data points
X_test, Y_test = X[260:], Y[260:] # test 后 40 data points

数据创建完后,我们查看一下生成的随机数据

建立神经网络模型

Sequential 建立 model

model.add 添加神经层,添加的是 Dense 全连接神经层。

参数有两个,一个是输入数据和输出数据的维度,本代码的例子中 x 和 y 是一维的。

如果需要添加下一个神经层的时候,不用再定义输入的纬度,因为它默认就把前一层的输出作为当前层的输入(这一点大大简化了神经网络的搭建过程)

model = Sequential()
model.add(Dense(output_dim=1, input_dim=1))
model.compile(loss='mse', optimizer='sgd') 
# 参数中,误差函数用的是 mse 均方误差;优化器用的是 sgd 随机梯度下降法

以上3行代码便是keras神经网络的搭建过程(比tensorflow减少了很多),构建完成神经网络后,开始训练

keras神经网络训练

for step in range(401):
cost = model.train_on_batch(X_train, Y_train)
if step % 100 == 0:
print('train cost: ', cost)
'''
train cost: 4.0291815
train cost: 0.076484405
train cost: 0.004810586
train cost: 0.0029513359
train cost: 0.002760151
'''

训练400步,每100步打印一下训练的结果,使用model.train_on_batch 一批一批的训练 X_train, Y_train

keras 神经网络的验证

使用 model.evaluate,输入测试集的x和y, 输出 cost,weights 和 biases。其中 weights 和 biases 是取在模型的第一层 model.layers[0] 学习到的参数

从训练的结果看出, weights 比较接近0.5,bias 接近 2,符合我们输入的模型

cost = model.evaluate(X_test, Y_test, batch_size=40)
print('test cost:', cost)
W, b = model.layers[0].get_weights()
print('Weights=', W, '\nbiases=', b)
40/40 [==============================] - 0s 450us/step
test cost: 0.003141355235129595
Weights= [[0.51579475]]
biases= [1.9971616]

可视化模型

验证完成后,我们可以可视化模型,看看神经网络预测的数据与实际数据的差异

Y_pred = model.predict(X_test)
plt.scatter(X_test, Y_test)
plt.plot(X_test, Y_pred)
plt.show()

以上便是keras构建回归神经网络的步骤,我们下期分享一下如何使用keras构建分类模型的神经网络

 动画详解transformer  

更多transformer,VIT,swin tranformer
参考头条号:人工智能研究所
v号:启示AI科技
微信中复制如下链接,打开,免费体验chatgpt
 
https://wx2.expostar.cn/qz/pages/manor/index?id=1137&share_from_id=79482&sid=24

 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
Keras是一个基于Python的深度学习库,提供了许多便捷的API用于神经网络搭建Keras框架的特点是高度模块化、易于扩展、支持GPU和CPU的混合计算、用户友好,可以方便的构建各种神经网络模型并进行训练和预测。 在Keras搭建神经网络,首先需要确定神经网络的模型。Keras支持多种模型构建方法,包括序列模型、函数式模型和子类化API等。 序列模型是最简单的一种,它是一个线性的神经网络模型,是多个网络层的线性堆叠,其中的每一层都是前一层的输出作为下一层的输入。可以用以下方式构建一个序列模型: ``` from keras.models import Sequential from keras.layers import Dense model = Sequential() model.add(Dense(units=32, activation='relu', input_dim=100)) model.add(Dense(units=10, activation='softmax')) ``` 函数式模型可以用于构建更复杂的模型,如多输入和多输出的神经网络。可以用以下方式构建一个函数式模型: ``` from keras.layers import Input, Dense from keras.models import Model # This returns a tensor inputs = Input(shape=(784,)) # a layer instance is callable on a tensor, and returns a tensor x = Dense(64, activation='relu')(inputs) x = Dense(64, activation='relu')(x) predictions = Dense(10, activation='softmax')(x) # This creates a model that includes # the Input layer and three Dense layers model = Model(inputs=inputs, outputs=predictions) model.compile(optimizer='rmsprop', loss='categorical_crossentropy', metrics=['accuracy']) ``` 子类化API提供了更加灵活的构建方式,可以通过自定义网络层和模型的方式实现复杂的神经网络。可以用以下方式构建一个子类化API模型: ``` import tensorflow as tf from tensorflow import keras from tensorflow.keras import layers class MyModel(keras.Model): def __init__(self): super(MyModel, self).__init__() self.dense1 = layers.Dense(64, activation='relu') self.dense2 = layers.Dense(64, activation='relu') self.dense3 = layers.Dense(10, activation='softmax') def call(self, inputs): x = self.dense1(inputs) x = self.dense2(x) x = self.dense3(x) return x model = MyModel() model.compile(optimizer=keras.optimizers.Adam(learning_rate=1e-3), loss=keras.losses.SparseCategoricalCrossentropy(), metrics=[keras.metrics.SparseCategoricalAccuracy()]) ``` 无论采用何种方式搭建神经网络,都需要进行模型的编译和训练。模型的编译需要指定优化器、损失函数和评估指标。模型的训练则需要指定训练集、验证集、批处理大小和训练轮数等参数。可以用以下方式训练和评估模型: ``` history = model.fit(x_train, y_train, batch_size=64, epochs=5, validation_data=(x_val, y_val)) test_scores = model.evaluate(x_test, y_test, verbose=2) print('Test loss:', test_scores[0]) print('Test accuracy:', test_scores[1]) ``` 以上是Keras搭建神经网络的基本流程,需要根据具体问题和数据集的不同进行调整和优化。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

人工智能研究所

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值