赞
踩
目录
- import numpy as np
- import h5py
- import matplotlib.pyplot as plt
- import testCases
- from dnn_utils import sigmoid, sigmoid_backward, relu, relu_backward
- import lr_utils
-
- #两层神经网络参数初始化
- np.random.seed(1)#随机种子确保结果相同
- def initialize_parameters(n_x,n_h,n_y):
- W1 = np.random.randn(n_h, n_x) * 0.01
- b1 = np.zeros((n_h, 1))
- W2 = np.random.randn(n_y, n_h) * 0.01
- b2 = np.zeros((n_y, 1))
-
- #使用断言确保数据格式是正确的
- assert(W1.shape == (n_h, n_x))
- assert(b1.shape == (n_h, 1))
- assert(W2.shape == (n_y, n_h))
- assert(b2.shape == (n_y, 1))
-
- parameters = {"W1": W1,
- "b1": b1,
- "W2": W2,
- "b2": b2}
-
- return parameters
-
- #多层神经网络参数初始化
- '''layers_dims - 包含网络中每个层的节点数量的列表
- #比如网络有三层,第一层有5个神经元,第二层有3个神经元,第三层有6个神经元
- 则layers_dims = [5,3,6],len(layers_dims) = 3'''
-
- def initialize_parameters_deep(layers_dims):
- np.random.seed(3)
- parameters = {}#存放参数的字典
- L = len(layers_dims)#网络的层数
-
- for l in range(1,L):#遍历网络的每一层对参数进行随机初始化
- parameters["W" + str(l)] = np.random.randn(layers_dims[l], layers_dims[l - 1]) / np.sqrt(layers_dims[l - 1])
- parameters["b" + str(l)] = np.zeros((layers_dims[l], 1))
-
- #确保数据的格式正确
- assert(parameters["W" + str(l)].shape == (layers_dims[l], layers_dims[l-1]))
- assert(parameters["b" + str(l)].shape == (layers_dims[l], 1))
-
- return parameters
- #线性部分
- def linear_forward(A,W,b):
- Z = np.dot(W,A) + b
-
- assert(Z.shape == (W.shape[0],A.shape[1]))
-
- cache = (A,W,b)#存储前向传播得到的参数用于反向传播
-
- return Z,cache
-
- #神经网络每一层的带激活函数的线性部分
- def linear_activation_forward(A_prev,W,b,activation):
-
- if activation == "sigmoid":
- Z, linear_cache = linear_forward(A_prev, W, b)
'运行
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。