DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
2023-09-14 09:04:43 时间
DL之DNN:基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
目录
基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
基于sklearn自带california_housing加利福尼亚房价数据集利用GD神经网络梯度下降算法进行回归预测(数据较多时采用mini-batch方式训练会更快)
该数据包含9个变量的20640个观测值,该数据集包含平均房屋价值作为目标变量和以下输入变量(特征):平均收入、房屋平均年龄、平均房间、平均卧室、人口、平均占用、纬度和经度。
输出结果
epoch: 20 batch_id: 83 Batch loss 0.5640518069267273
……
epoch: 90 batch_id: 203 Batch loss 0.6403363943099976
epoch: 90 batch_id: 204 Batch loss 0.45315566658973694
epoch: 90 batch_id: 205 Batch loss 0.5528439879417419
epoch: 90 batch_id: 206 Batch loss 0.386596143245697
实现代码
import tensorflow as tf
import numpy as np
from sklearn.datasets import fetch_california_housing
from sklearn.preprocessing import StandardScaler
scaler = StandardScaler() #将特征进行标准归一化
#获取房价数据
housing = fetch_california_housing()
m,n = housing.data.shape
print (housing.keys()) #输出房价的key
print (housing.feature_names) #输出房价的特征:
print (housing.target)
print (housing.DESCR)
housing_data_plus_bias = np.c_[np.ones((m,1)), housing.data]
scaled_data = scaler. fit_transform(housing.data)
data = np.c_[np.ones((m,1)),scaled_data]
# #T1、传统方式
# A = tf.placeholder(tf.float32,shape=(None,3))
# B = A + 5
# with tf.Session() as sess:
# test_b_l = B.eval(feed_dict={A:[[1,2,3]]})
# test_b_2 = B.eval(feed_dict={A:[[4,5,6],[7,8,9]]})
# print(test_b_1)
# print(test_b_2)
#T2、采用mini-batch方式
X = tf.placeholder(tf.float32, shape=(None, n + 1), name="X")
y = tf.placeholder(tf.float32, shape=(None, 1), name="y")
#采用optimizer计算梯度,设置参数
n_epochs = 100
learning_rate = 0.01
batch_size=100
n_batches = int(np.ceil(m / batch_size))
theta = tf.Variable(tf.random_uniform([n + 1, 1], -1.0, 1.0, seed=42), name="theta")
y_pred = tf.matmul(X, theta, name="predictions")
error = y_pred - y
mse = tf.reduce_mean(tf.square(error), name="mse")
optimizer = tf.train.GradientDescentOptimizer(learning_rate=learning_rate)
training_op = optimizer.minimize(mse)
init = tf.global_variables_initializer()
#定义mini-batch取数据方式
def fetch_batch(epoch, batch_index, batch_size):
np.random.seed(epoch * n_batches + batch_index)
indices = np.random.randint(m, size=batch_size)
X_batch = data[indices]
y_batch = housing.target.reshape(-1, 1)[indices]
return X_batch, y_batch
#mini-batch计算过程
with tf.Session() as sess:
sess.run(init)
for epoch in range(n_epochs):#/gfeMat
avg_cost = 0.
for batch_index in range(n_batches):
X_batch, y_batch = fetch_batch(epoch, batch_index, batch_size)
sess.run(training_op, feed_dict={X: X_batch, y: y_batch})
if epoch % 10 == 0:
total_loss = 0
acc_train = mse.eval(feed_dict={X: X_batch, y: y_batch})
total_loss += acc_train
#print(acc_train, total_loss)
print("epoch:",epoch, "batch_id:",batch_index, "Batch loss", total_loss)
相关文章
- 【经验】深度强化学习训练与调参技巧
- 飞桨框架v2.3发布,高复用性算子库、异构多云分布式训练等多项新特性重磅升级
- Obsidian知识循环训练利器
- 算法训练 格子操作(线段树)-----------C语言—菜鸟级
- 最全深度学习训练过程可视化工具(附github源码)
- Uni-Mol:分子3D表示学习框架和预训练模型项目原作解读
- ArgMiner:一个用于对论点挖掘数据集进行处理、增强、训练和推理的 PyTorch 的包
- 5300亿NLP模型“威震天-图灵”发布,由4480块A100训练,微软英伟达联合出品
- 大规模、高性能,清华、聆心智能推出中文开放域对话预训练开源模型OPD
- VLDB 2023 | 北大河图发布分布式训练神器Galvatron, 一键实现大模型高效自动并行
- DN-DETR:引入去噪训练以加速收敛
- 多模态再次统一!Meta发布自监督算法data2vec 2.0:训练效率最高提升16倍!
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-5 算法训练 最短路
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-7 算法训练 逆序对 平衡二叉树
- 第十四届蓝桥杯集训——练习解题阶段(无序阶段)-ALGO-246 算法训练 猴子吃包子
- 7 Papers & Radios | 无需注意力的预训练;被GPT带飞的In-Context Learning
- 新至强训练推理增效十倍,英特尔CPU加速AI更上一层楼
- 三年两代AI训练芯片,燧原科技凭什么
- 算法训练:贪心与回溯
- 只训练一次数据就能识别出物体,谷歌全新 AI 算法“单次学习”
- Kindred AI 要借助强化学习,让人甚至猴子戴着VR眼镜训练机器人变得聪明
- 现场|David Silver原文演讲:揭秘新版AlphaGo算法和训练细节