代码解释
并不是全部代码,思路的流程
import numpy as np
# 如何判断咖啡豆是烤好了
# 假设此神经网络由2层构成
###### 这部分代码只是如何建立2层网络,
###### 并不包含如何加载神经网络中的参数 w 和 b
######################## 第1层网络
# x 是输入矩阵
# x 是由温度200 和 持续时间 17min 构成的矩阵
# 因为使用的是Tensorflow,因此这里的输入数据为 1 x 2 的矩阵
x = np.array([[200.0, 17.0]])
# layer_1
# layer_1 是一个由3个神经元构成,并且激活函数是sigmoid
# Dense 是tensorflow中的一个库,是神经网络中的一个类型的层
layer_1 = Dense(units = 3, activation = 'sigmoid')
# 计算第一层的输出,也就是激活函数 a1
# 如果打印输出 a1, 则会得到如下的结果
# ex: tf.Tensor([[1.0000000e+00 8.1249654e-20 0.0000000e+00]], shape=(1, 3), dtype=float32)
# Tensor 可以看成是矩阵, [1.0000000e+00 8.1249654e-20 0.0000000e+00] 表示 a1 中的元素,”shape=(1, 3)“ 表示 a1 是一个 1 x 3 的矩阵,并且其中的数据以 float32 进行存储
a1 = layer_1(x)
# 如果想将Tensor 矩阵 转换成 Numpy 矩阵
a1.numpy()
# print(a1.numpy())
######################## 第2层网络,也就是输出结果层
layer_2 = Dense(units = 1, activation = 'sigmoid')
# 注意的是这里 a2 虽然输出的是一个数字,但是其实他是1 x 1 的数组
a2 = layer_2(a1)
# print(a2)
# tf.Tensor([[0.52318585]], shape=(1, 1), dtype=float32)
# 设置阈值,判断结果
# 这里阈值设置为0.5, 大于0.5,烤好了
# 小于0.5, 没有烤好
if a2 >= 0.5:
print("yes, it is cooked")
else:
print("not cooked")
import numpy as np
from tensorflow.keras.layers import Dense
from tensorflow.keras.models import Sequential
# 其他的方式来实现神经网络
# 思路如下
# 建立 2 层网络
layer_1 = Dense(units=3, activation='sigmoid')
layer_2 = Dense(units=1, activation='sigmoid')
# 在 B站吴恩达_tensorflow.py 中,我们手动获取数据并将将其传输到下一层
# 这里,我们告诉 Tensorflow 将layer_1 和 layer_2串成一整个神经网络
# Sequential 的作用是,请将刚才建立的layer_1 和 layer_2 按照顺序串起来,组成一个神经网络
model = Sequential([layer_1, layer_2])
# training set
x = np.array([[200.0, 17.0],
[120.0, 5.0],
[425.0, 20.0],
[212.0, 18.0]])
# target, 数组,而不是矩阵
y = np.array([1,0,0,1])
# 调用编译函数 compile
# model.compile()
# 拟合训练数据 x 和 正确结果 y 用函数 fit
model.fit(x, y)
# 如果有新的数据 x, 不需要在做一层网络单独计算新的x
# 只需要调用预测函数
# model.predict(x_new)