2021SC@SDUSC
附所有代码链接:https://github.com/Jayshen0/ Unsupervised-Deep-Keyphrase-Generatio
上一篇博客中,我们了解了一个逻辑回归实现的过程,现在我们来总结一下。画图不太方便,因此自己手写了一些内容,笔记如下。
在这篇博客中,我们将开始一个简单的单隐藏层神经网络的搭建,具体要实现:
- 构建具有单隐藏层的2类分类神经网络。
- 使用具有非线性激活功能激活函数,例如tanh。
- 计算交叉熵损失(损失函数)。
- 实现向前和向后传播。
构建的神经网络如图:
代码文件如图:
1.加载数据集,将一个花的图案的2类数据集加载到变量X和Y中。
import numpy as np
import matplotlib.pyplot as plt
from testCases import * #提供了一些测试示例来评估函数的正确性
import sklearn #为数据挖掘和数据分析提供的简单高效的工具
import sklearn.datasets
import sklearn.linear_model
from planar_utils import plot_decision_boundary, sigmoid, load_planar_dataset, load_extra_datasets
#提供了在这个任务中使用的各种有用的功能
#%matplotlib inline
np.random.seed(1) #设置一个固定的随机种子,以保证接下来的步骤中我们的结果是一致的。
#X是一个numpy的矩阵,包含了这些数据点的数值
#Y是一个numpy的向量,对应着的是X的标签【0 | 1】(红色:0 , 蓝色 :1)
X, Y = load_planar_dataset()
plt.scatter(X[0, :], X[1, :], c=Y, s=40, cmap=plt.cm.Spectral) #绘制散点图
shape_X = X.shape
shape_Y = Y.shape
m = Y.shape[1] # 训练集里面的数量
print ("X的维度为: " + str(shape_X))
print ("Y的维度为: " + str(shape_Y))
print ("数据集里面的数据有:" + str(m) + " 个")
#plt.scatter(X[0, :], X[1, :], c=Y, s=40, cmap=plt.cm.Spectral) #绘制散点图
# 上一语句如出现问题,请使用下面的语句:
plt.scatter(X[0, :], X[1, :], c=np.squeeze(Y), s=40, cmap=plt.cm.Spectral) #绘制散点图
plt.show()
数据集绘制:
测试结果如下:
2.定义神经网络结构
参数:
- X - 输入数据集,维度为(输入的数量,训练/测试的数量)