基础中的基础!吴恩达deeplearning.ai:如何搭建一个神经网络

本文介绍了如何使用Tensorflow的Sequential框架来简化神经网络的构建过程,通过将多层网络连接起来,避免了显式地逐层传递数据。作者还展示了如何用新方法重写数字分类示例,使得代码更简洁高效。
摘要由CSDN通过智能技术生成

在前面几篇博客的学习之后,你应该了解了如何写出Tensorflow有关的代码,如何在Tensorflow中搭建一个层以及如何在Tensorflow之中实现前向推理(链接),也了解了Tensorflow有关的数据形式(链接
今天,我们要把这些内容放在一起,搭建一个真正的神经网络密集负载,其实就是用tensorflow的一些库函数简化了代码,同时会采用一种不同且更加简单的方式。


之前的写法

x = np.array([[200.0, 17.0]])
layer_1 = Dense(units=3, activation='sigmoid')
a_1 = layer_1(x)

layer_2 = Dense(units=1, activation='sigmoid')
a_2 = layer_2(a_1)

之前构建神经网络的做法是,先创建了特征向量,再分别构建隐藏层和最终输出层,然后一步一步前向传播最终得到预测值。这是一种显式的构建方式。

新的写法

事实上,Tensorflow有多种不同的方式来实现前向传播以及学习方式,让我来展示一种:
和以前一样的是创建层:

layer_1 = Dense(units=3, activation='sigmoid')
layer_2 = Dense(units=1, activation='sigmoid')

但现在不是手动获取数据并传入第一层,然后再手动传入第二层等等,相反,我们可以告诉Tensorflow,希望它采用第一层和第二层并且串在一起形成一个神经网络,写法为:

model = Sequential([layer_1, layer_2])

简单点说,以上代码就是告诉Tensorflow,把这俩层按照顺序串联好。事实证明,使用Sequential框架可以做很多事情,假设你有这么一个咖啡的例子(不了解的可以看我上面的链接,以前提到过):
在这里插入图片描述
你可以将x存储为矩阵:

x = np.array([[200, 17],
              [120, 5],
              [425, 20],
              [212, 18]])

你也可以将y存储为矩阵,采取的形式为一维数组:

y = np.array([1001])

然后将以前的一大堆内容简化为了这三个库函数:

model.compile(...)
model.fit(x, y)
model.predict(x_new)

如果你想运行这个神经网络,且你想调用一些参数,那么可以使用model.compile(以后详细讲)
model.fit(x, y),它可以告诉Tensorflow按照顺序将第一层和第二层串联在一起搭建神经网络并进行拟合
假设你有一组新的特征向量x_new,你可以用model.predict(x_new)来进行预测

layer_1 = Dense(units=3, activation='sigmoid')
layer_2 = Dense(units=1, activation='sigmoid')
model = Sequential([layer_1, layer_2])

所有一般来说,以上三行显式的代码在定义完之后不用重复写了,因为可以使用:

model.compile(...)
model.fit(x, y)
model.predict(x_new)

的形式来隐式表示,里面可以具体定义有几层,每层各多少神经元,用的什么激活函数之类的

数字分类重写

让我们也用以上方法重新写下以前博客写过的数字分类(可以在我的博客中找到)
第一步定义下各层:

layer_1 = Dense(units=25, activation='sigmoid')
layer_2 = Dense(units=15, activation='sigmoid')
layer_3 = Dense(units=1, activation='sigmoid')

第二步使用Squential把三层串联在一起:

model = Sequential([layer_1, layer_2, layer_3])

第三步使用compile定义具体参数:

model.compile(...)

第四步定义下数据集:

x = np.array([[0.0...245,...240,...0]
              [0.0...200,...184,...0]])
y = np.array([1, 0]

第五步进行拟合:

model.fit(x, y)

第六步进行预测:

model.predict(x_new)

一二步代码可以用嵌套的形式,更加简接:

model = Squential([
  Dense(units = 25, activation = 'sigmoid'),
  Dense(units = 15, activation = 'sigmoid'),
  Dense(units = 1, activation = 'sigmoid')
  ])

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

  • 14
    点赞
  • 15
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

江安的猪猪

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

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

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

打赏作者

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

抵扣说明:

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

余额充值