吴恩达deeplearning.ai:Tensorflow训练一个神经网络

以下内容有任何不理解可以翻看我之前的博客哦:吴恩达deeplearning.ai

在之前的博客中。我们陆续学习了各个方面的有关深度学习的内容,今天可以从头开始训练一个神经网络了。

Tensorflow训练神经网络模型

我们使用之前用过的例子:

这个神经网络有三层,第一层拥有25个神经元,第二层15个神经元,第三层为最终输出层。

现在提供一个训练集X,一个标签Y,该如何通过代码的形式来表现呢?

python 复制代码
#1导入工具包
import tensrflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

#2创建三个层并让Tensorflow按照顺序将几个层串联起来
  model = Sequential([
    Dense(units = 25, activation = 'sigmoid')
    Dense(units = 15, activation = 'sigmoid')
    Dense(units = 1, activation = 'sigmoid')
                     ])
 #3引入工具包,并且让损失函数使用分类交叉熵的形式
from tensorflow.keras.losses import
BinaryCrossentropy
  model.compile(loss = BinaryCrossentropy())

#调用拟合函数,epoch代表训练次数
  model.fit(X, Y, epochs=100)

模型中的一些细节讲解

框架相关

让我们先复习一下之前的内容,如何实现逻辑回归的:

第一步,如何在给定输入特征X和参数W,b的情况下计算输出(定义模型),我们这里经常使用的是sigmoid函数。

第二步,指定损失函数与成本函数

第三步,训练模型,最小化J(w,b)

让我们在训练神经网络的背景下来看看这几步:

python 复制代码
#1导入工具包
import tensrflow as tf
from tensorflow.keras import Sequential
from tensorflow.keras.layers import Dense

#2创建三个层并让Tensorflow按照顺序将几个层串联起来
  model = Sequential([
    Dense(units = 25, activation = 'sigmoid')
    Dense(units = 15, activation = 'sigmoid')
    Dense(units = 1, activation = 'sigmoid')
                     ])

这几段代码说明了神经网络的整个架构体系,告诉你第一层有25个神经元,第二层有15个神经元,第三层一个,采用的激活函数均为sigmoid。

损失函数相关

再写一遍 损失函数的一般数学表达式:
J ( W , B ) = 1 m ∑ L ( f ( x ( i ) , y ( i ) ) J(W,B) = \frac{1}{m}\sum L(f(x^{(i)},y^{(i)}) J(W,B)=m1∑L(f(x(i),y(i))

python 复制代码
 #3引入工具包,并且让损失函数使用分类交叉熵的形式
from tensorflow.keras.losses import
BinaryCrossentropy
  model.compile(loss = BinaryCrossentropy())

这个名叫keras的工具包其实是和tensorflow是完全不同的两个项目开发的,只是最后合入了tensorflow,所有它的工具包需要你单独import。另外,由于工具包的种类真的很多,所以不知道工具包的名字和使用方法时可以上网查找哦。

我们在之前的博客中,曾经学习过二元交叉熵 (这是统计学上的叫法),二元的意思是说明这是个布尔值,要么为1要么为0.只是在之前的博客中不叫这个名字,而是为了能够在一个式子之中写出价代价函数:
L ( f ( x ) , y ) = − y l o g ( f ( x ) ) − ( 1 − y ) l o g ( ( 1 − f ( x ) ) L(f(x),y) = -ylog(f(x)) - (1-y)log((1-f(x)) L(f(x),y)=−ylog(f(x))−(1−y)log((1−f(x))

在制定了损失函数之后,Tensorflow就知道了你是希望最小化m个训练的平均值。

如果你是想解决其它类型的问题例如回归问题,你可以给tensorflow指定其它种类的损失函数:

python 复制代码
from tensorflow.keras.losses import MeanSquareError
model.compile(loss = MeanSquareError())

这是最小化平方误差损失的损失函数。

梯度下降

梯度下降时,你需要重复公式:
w = w − α ∂ ∂ w j J ( w , b ) b = b − α ∂ ∂ b j J ( w , b ) w = w - \alpha\frac{\partial}{\partial w_j}J(w,b)\\ b = b - \alpha\frac{\partial}{\partial b_j}J(w,b) w=w−α∂wj∂J(w,b)b=b−α∂bj∂J(w,b)

python 复制代码
#调用拟合函数,epoch代表训练次数
  model.fit(X, Y, epochs=100)

Tensorflow使用的是一种叫做反向传播的算法来计算这些偏导数项,只是在函数model.fit中完成的,并告诉它这样迭代100次。

很明显我们现在的代码严重依赖于Tensorflow库,随着技术的发展,大部分工程师都会使用库而非自己重头编起。现在你已经了解了如何自己训练一个神经网络了,在接下来的博客中我们讲讲到一些你可以改变的地方,使得你的神经网络更加强大。

为了给读者你造成不必要的麻烦,博主的所有视频都没开仅粉丝可见,如果想要阅读我的其他博客,可以点个小小的关注哦。

相关推荐
静心问道3 分钟前
SEW:无监督预训练在语音识别中的性能-效率权衡
人工智能·语音识别
前端付豪5 分钟前
17、自动化才是正义:用 Python 接管你的日常琐事
后端·python
jioulongzi6 分钟前
记录一次莫名奇妙的跨域502(badgateway)错误
开发语言·python
xwz小王子10 分钟前
从LLM到WM:大语言模型如何进化成具身世界模型?
人工智能·语言模型·自然语言处理
我爱一条柴ya10 分钟前
【AI大模型】深入理解 Transformer 架构:自然语言处理的革命引擎
人工智能·ai·ai作画·ai编程·ai写作
静心问道12 分钟前
FLAN-T5:规模化指令微调的语言模型
人工智能·语言模型·自然语言处理
李师兄说大模型12 分钟前
KDD 2025 | 地理定位中的群体智能:一个多智能体大型视觉语言模型协同框架
人工智能·深度学习·机器学习·语言模型·自然语言处理·大模型·deepseek
静心问道13 分钟前
SqueezeBERT:计算机视觉能为自然语言处理在高效神经网络方面带来哪些启示?
人工智能·计算机视觉·自然语言处理
Sherlock Ma13 分钟前
百度开源文心一言4.5:论文解读和使用入门
人工智能·百度·自然语言处理·开源·大模型·文心一言·多模态
weisian15118 分钟前
人工智能-基础篇-18-什么是RAG(检索增强生成:知识库+向量化技术+大语言模型LLM整合的技术框架)
人工智能·语言模型·自然语言处理