【tensorflow】连续输入的神经网络模型训练代码

简介: 【tensorflow】连续输入的神经网络模型训练代码

全部代码 - 复制即用


from sklearn.model_selection import train_test_split
import tensorflow as tf
import numpy as np
from keras import Input, Model, Sequential
from keras.layers import Dense, concatenate, Embedding, LSTM
from sklearn.preprocessing import StandardScaler
from tensorflow import keras
def get_data():
    # 设置随机种子,以确保结果可复现(可选)
    np.random.seed(0)
    # 生成随机数据
    data = np.random.rand(10000, 10)
    # 正则化数据
    scaler = StandardScaler()
    data = scaler.fit_transform(data)
    # 生成随机数据
    target = np.random.rand(10000, 1)
    return train_test_split(data, target, test_size=0.1, random_state=42)
data_train, data_val, target_train, target_val = get_data()
# 迭代轮次
train_epochs = 10
# 学习率
learning_rate = 0.0001
# 批大小
batch_size = 200
model = keras.models.Sequential([
    keras.layers.Dense(64, activation="relu", input_shape=[10]),
    keras.layers.Dense(64, activation="relu"),
    keras.layers.Dense(1)
])
model.summary()
model.compile(loss="mse", optimizer=keras.optimizers.Adam(lr=learning_rate))
history = model.fit(data_train, target_train, epochs=train_epochs, batch_size=batch_size, validation_data=(data_val, target_val))

训练输出


  模型结构如下:




.



代码介绍


 get_data函数用于生成随机的训练和验证数据集。首先使用np.random.rand生成一个形状为(10000, 10)的随机数据集,来模拟10维的连续输入,然后使用StandardScaler对数据进行标准化。再生成一个(10000,1)的target,表示最终拟合的目标分数。最后使用train_test_split函数将数据集划分为训练集和验证集。


 由于target是浮点数,所以我们这个任务就是回归任务了。


 使用keras.models.Sequential构建一个序列模型。模型由一系列层按顺序连接而成。在这个例子中,模型由三个全连接层构成。


 第一个隐藏层(keras.layers.Dense)具有64个神经元,使用ReLU激活函数,并指定输入形状为[10]。输入形状表示输入数据的维度。


 第二个隐藏层也是一个具有64个神经元的全连接层,同样使用ReLU激活函数。


 最后一层是输出层,由一个神经元组成,不使用激活函数。


 模型的结构是输入层(10维)→隐藏层(64个神经元,ReLU激活函数)→隐藏层(64个神经元,ReLU激活函数)→输出层(1个神经元)。


 最后,使用model.compile方法配置模型的损失函数和优化器。在这个例子中,损失函数设置为均方误差(Mean Squared Error,MSE),优化器选择Adam优化算法,并设置学习率为learning_rate。


 使用model.fit方法对模型进行训练。传入训练数据data_train和目标数据target_train,设置训练轮次train_epochs、批处理大小batch_size,以及验证集数据(data_val, target_val)。


 训练过程中,模型会根据给定的训练数据和目标数据进行参数更新,通过反向传播算法优化模型的权重和偏置。每个训练轮次(epoch)都会对整个训练数据集进行一次完整的训练。训练过程还会使用验证集数据对模型进行评估,以监控模型的性能和验证集上的损失。


 训练过程中的损失值和其他指标会被记录在history对象中,可以用于后续的可视化和分析。



相关文章
|
1月前
|
机器学习/深度学习 算法 PyTorch
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
RPN(Region Proposal Networks)候选区域网络算法解析(附PyTorch代码)
237 1
|
2月前
|
机器学习/深度学习 编解码 文件存储
YOLOv8改进 | 2023Neck篇 | BiFPN双向特征金字塔网络(附yaml文件+代码)
YOLOv8改进 | 2023Neck篇 | BiFPN双向特征金字塔网络(附yaml文件+代码)
262 0
|
2月前
|
机器学习/深度学习 算法 PyTorch
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
python手把手搭建图像多分类神经网络-代码教程(手动搭建残差网络、mobileNET)
46 0
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv8改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv8改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
91 0
|
2月前
|
机器学习/深度学习 测试技术 Ruby
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
YOLOv5改进 | 主干篇 | 反向残差块网络EMO一种轻量级的CNN架构(附完整代码 + 修改教程)
130 2
|
10天前
|
机器学习/深度学习 运维 监控
TensorFlow分布式训练:加速深度学习模型训练
【4月更文挑战第17天】TensorFlow分布式训练加速深度学习模型训练,通过数据并行和模型并行利用多机器资源,减少训练时间。优化策略包括配置计算资源、优化数据划分和减少通信开销。实际应用需关注调试监控、系统稳定性和容错性,以应对分布式训练挑战。
|
10天前
|
机器学习/深度学习 TensorFlow 调度
优化TensorFlow模型:超参数调整与训练技巧
【4月更文挑战第17天】本文探讨了如何优化TensorFlow模型的性能,重点介绍了超参数调整和训练技巧。超参数如学习率、批量大小和层数对模型性能至关重要。文章提到了三种超参数调整策略:网格搜索、随机搜索和贝叶斯优化。此外,还分享了训练技巧,包括学习率调度、早停、数据增强和正则化,这些都有助于防止过拟合并提高模型泛化能力。结合这些方法,可构建更高效、健壮的深度学习模型。
|
12天前
|
机器学习/深度学习 PyTorch TensorFlow
【TensorFlow】TF介绍及代码实践
【4月更文挑战第1天】TF简介及代码示例学习
|
1月前
|
机器学习/深度学习 PyTorch 算法框架/工具
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
卷积神经元网络中常用卷积核理解及基于Pytorch的实例应用(附完整代码)
20 0
|
2月前
|
机器学习/深度学习 存储 算法
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
【轻量化:实操】动手实现神经网络中的裁枝操作(附演示代码&yolo系列)
46 1