《零基础实践深度学习》波士顿房价预测任务1.3.3.5 总结

2.5 模型保存

Numpy提供了save接口,可直接将模型权重数组保存为.npy格式的文件。

In [53]

np.save('w.npy', net.w)
np.save('b.npy', net.b)

总结

本节我们详细介绍了如何使用Numpy实现梯度下降算法,构建并训练了一个简单的线性模型实现波士顿房价预测,可以总结出,使用神经网络建模房价预测有三个要点:

  • 构建网络,初始化参数w和b,定义预测和损失函数的计算方法。
  • 随机选择初始点,建立梯度的计算方法和参数更新方式。
  • 将数据集的数据按batch size的大小分成多个mini-batch,分别灌入模型计算梯度并更新参数,不断迭代直到损失函数几乎不再下降。

作业1-2

  1. 样本归一化:预测时的样本数据同样也需要归一化,但使用训练样本的均值和极值计算,这是为什么?

我看课程中老师说的是为了尽可能地模拟真实的环境,不过这个我不是很明白,我自己的理解是这样,我觉得一开始我们是将数据集进行划分的,80%划分为训练集,20%划分为测试集,因此测试集的归一化需要使用训练集的均值和极值进行计算,因为训练集更多嘛,测试集相对来说数据还是有点少的。

  1. 当部分参数的梯度计算为0(接近0)时,可能是什么情况?是否意味着完成训练?

这个呢,一开始我是以为那应该就是到达极值点了,但实际上我把我的数学知识都还给老师了。这个应该是不一定的,首先它有可能是确实到达了全局的极值点;但是也有可能只是一个局部的极值点,这个时候我们就要去和其他的极值点进行比较,判断哪个是全局的极值点如图1所示;同样它还有可能根本不是一个极值点,比如说马鞍这样一个特殊的图形,如图2所示,沿着y轴来看,确实是一个极小值,但是沿着x轴来看却不是极小值,而是一个极大值了,这就很有意思,所以说我们在考虑问题的时候一定要从多个角度去考虑,另外数学基础真的很重要,一定要好好学习数学知识。

作业 1-3

  1. 随机梯度下降的batchsize设置成多少合适?过小有什么问题?过大有什么问题?提示:过大以整个样本集合为例,过小以单个样本为例来思考。

随机梯度下降的batchsize应该根据自身的情况进行设定,如果数据集不是很大,可以将全部数据读入;如果数据太大,可以考虑使用mini-batch。

如果设置过小的话,如单个样本,那么每个epoch就会花费较多的时间,同时由于每次都按照一个样本进行更新梯度,那么可能梯度会方向混乱,最后导致无法收敛;如果设置过大的话,如整个样本集合,虽然epoch的时间减少了,但是可能需要更大的epoch,同时对于数据集很大的情况来说,可能会导致内存崩溃。所以要合理地选择batchsize。

此题目在1.5.2.4也有解答

  1. 一次训练使用的配置:5个epoch,1000个样本,batchsize=20,最内层循环执行多少轮?

在《1.5训练过程和校验效果》的8:35左右,老师解答 一个epoch会执行1000/20 = 50次,50*5(epoch)=250轮:最内层循环执行250轮

作业1-4

基本知识

1. 求导的链式法则

链式法则是微积分中的求导法则,用于求一个复合函数的导数,是在微积分的求导运算中一种常用的方法。复合函数的导数将是构成复合这有限个函数在相应点的导数的乘积,就像锁链一样一环套一环,故称链式法则。如图9所示,如果求最终输出对内层输入(第一层)的梯度,等于外层梯度(第二层)乘以本层函数的梯度

图9:求导的链式法则

2. 计算图的概念

(1)为何是反向计算梯度?即梯度是由网络后端向前端计算。当前层的梯度要依据处于网络中后一层的梯度来计算,所以只有先算后一层的梯度才能计算本层的梯度

(2)案例:购买苹果产生消费的计算图。假设一家商店9折促销苹果,每个的单价100元。计算一个顾客总消费的结构如图10所示。

图10:购买苹果所产生的消费计算图

  • 前向计算过程:以黑色箭头表示,顾客购买了2个苹果,再加上九折的折扣,一共消费100*2*0.9=180元。
  • 后向传播过程:以红色箭头表示,根据链式法则,本层的梯度计算 * 后一层传递过来的梯度,所以需从后向前计算

最后一层的输出对自身的求导为1。导数第二层根据图11所示的乘法求导的公式,分别为0.9(本层梯度(乘法公式)为那个折扣0.9)*1(上层的梯度)和200(0.9下面的本层梯度是200)*1(上层的梯度)。同样的,第三层数量的反向梯度为100 (本层梯度)* 0.9(第二层的反向梯度)=90,2 * 0.9=1.8。

图11:乘法求导的公式

作业题
  1. 根据 图12 所示的乘法和加法的导数公式,完成 图13 购买苹果和橘子的梯度传播的题目。

图12:乘法和加法的导数公式

图13:购买苹果和橘子产生消费的计算图

加法不太会???看了大佬的感觉很对,加法就应该这样

  1. 挑战题:用代码实现两层的神经网络的梯度传播,中间层的尺寸为13【房价预测案例】(教案当前的版本为一层的神经网络),如 图14 所示。

图14:两层的神经网络

  • 44
    点赞
  • 41
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
深度学习可以用于波士顿房价预测。以下是一个使用深度学习模型进行波士顿房价预测的示例: ```python import numpy as np from tensorflow.keras.datasets import boston_housing from tensorflow.keras.models import Sequential from tensorflow.keras.layers import Dense # 加载波士顿房价数据集 (train_data, train_targets), (test_data, test_targets) = boston_housing.load_data() # 数据标准化 mean = train_data.mean(axis=0) std = train_data.std(axis=0) train_data = (train_data - mean) / std test_data = (test_data - mean) / std # 构建模型 model = Sequential() model.add(Dense(64, activation='relu', input_shape=(train_data.shape[1],))) model.add(Dense(64, activation='relu')) model.add(Dense(1)) # 编译模型 model.compile(optimizer='rmsprop', loss='mse', metrics=['mae']) # 训练模型 model.fit(train_data, train_targets, epochs=100, batch_size=1, verbose=0) # 在测试集上评估模型 test_mse_score, test_mae_score = model.evaluate(test_data, test_targets) # 预测房价 predictions = model.predict(test_data) # 打印预测结果 for i in range(10): print("预测房价: ", predictions[i][0], "实际房价: ", test_targets[i]) ``` 这个示例中,我们使用了波士顿房价数据集,将数据标准化后构建了一个包含两个隐藏层的神经网络模型。模型使用均方误差(MSE)作为损失函数,并使用均方误差(MAE)作为评估指标。我们训练模型并在测试集上评估模型的性能,最后使用模型进行房价预测并打印预测结果。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

软工菜鸡

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

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

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

打赏作者

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

抵扣说明:

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

余额充值