当前位置:   article > 正文

吴恩达机器学习-可选实验室:简单神经网络(Simple Neural Network)_w1, b1 = model.get_layer("layer1").get_weights()

w1, b1 = model.get_layer("layer1").get_weights()

在这个实验室中,我们将使用Tensorflow构建一个小型神经网络
在这里插入图片描述

import numpy as np
import matplotlib.pyplot as plt
plt.style.use('./deeplearning.mplstyle')
import tensorflow as tf
from tensorflow.keras.models import Sequential
from tensorflow.keras.layers import Dense
from lab_utils_common import dlc
from lab_coffee_utils import load_coffee_data, plt_roast, plt_prob, plt_layer, plt_network, plt_output_unit
import logging
logging.getLogger("tensorflow").setLevel(logging.ERROR)
tf.autograph.set_verbosity(0)

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

数据集

X,Y = load_coffee_data();
print(X.shape, Y.shape)
  • 1
  • 2

让我们在下面绘制咖啡烘焙数据。这两个功能是以摄氏度为单位的温度和以分钟为单位的持续时间。在家烤咖啡建议时间最好保持在12到15分钟之间,而温度应该在175到260摄氏度之间。当然,随着温度的升高,持续时间应该会缩短。

plt_roast(X,Y)
  • 1

在这里插入图片描述

标准化数据

如果数据被标准化,将权重与数据拟合(反向传播,将在下周的讲座中介绍)将更快地进行。这与您在课程1中使用的过程相同,其中数据中的每个特征都被标准化为具有相似的范围。下面的过程使用Keras规范化层。它有以下步骤:

  • 创建一个“规范化层”。请注意,正如这里所应用的,这不是模型中的层。
  • “调整”数据。这将学习数据集的均值和方差,并在内部保存这些值。
  • 规范化数据。
    将规范化应用于利用所学习模型的任何未来数据是很重要的。
print(f"Temperature Max, Min pre normalization: {np.max(X[:,0]):0.2f}, {np.min(X[:,0]):0.2f}")
print(f"Duration    Max, Min pre normalization: {np.max(X[:,1]):0.2f}, {np.min(X[:,1]):0.2f}")
norm_l = tf.keras.layers.Normalization(axis=-1)
norm_l.adapt(X)  # learns mean, variance
Xn = norm_l(X)
print(f"Temperature Max, Min post normalization: {np.max(Xn[:,0]):0.2f}, {np.min(Xn[:,0]):0.2f}")
print(f"Duration    Max, Min post normalization: {np.max(Xn[:,1]):0.2f}, {np.min(Xn[:,1]):0.2f}")
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

在这里插入图片描述
平铺/复制我们的数据以增加训练集大小并减少训练时期的数量。

Xt = np.tile(Xn,(1000,1))
Yt= np.tile(Y,(1000,1))   
print(Xt.shape, Yt.shape)   
  • 1
  • 2
  • 3

在这里插入图片描述 Tensorflow模型

Model
在这里插入图片描述
让我们构建讲座中描述的“咖啡烘焙网络”。有两层Sigmoid激活,如下所示:

tf.random.set_seed(1234)  # applied to achieve consistent results
model = Sequential(
    [
        tf.keras.Input(shape=(2,)),
        Dense(3, activation='sigmoid', name = 'layer1'),
        Dense(1, activation='sigmoid', name = 'layer2')
     ]
)
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

注1:tf.keras.input(shape=(2,)),指定输入的预期形状。这允许Tensorflow在这一点上调整权重和偏置参数的大小。这在探索Tensorflow模型时非常有用。在实践中可以省略此语句,当在model.fit语句中指定输入数据时,Tensorflow将调整网络参数的大小。
注2:在最后一层中包括S形激活不被视为最佳实践。相反,它会被计入损失中,从而提高数值稳定性。这将在稍后的实验室中进行更详细的描述。

model.summary()
  • 1

在这里插入图片描述

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Cpp五条/article/detail/303281?site
推荐阅读
相关标签