def predict_y(x, params): W1 = params["W1"] b1 = params["b1"] W2 = params["W2"] b2 = params["b2"] W3 = params["W3"] b3 = params["b3"] W4 = params["W4"] b4 = params["b4"] #测试用例样本数 test_m = x.shape[1] prediction_Y = np.zeros((1, test_m)) #计算 A1, Z1 = model.l_layer_forward_model(x, W1, b1, acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, W2, b2, acitvation="relu") #第2层 A3, Z3 = model.l_layer_forward_model(A2, W3, b3, acitvation="relu") #第3层 A4, Z4 = model.l_layer_forward_model(A3, W4, b4, acitvation="sigmoid") #第4层 test_Y = A4 # print(test_Y.shape) for i in range(test_Y.shape[1]): if test_Y[0][i] > 0.5: prediction_Y[0][i] = 1 else: prediction_Y[0][i] = 0 return prediction_Y
def predict_y_with_load_params(x): cur_filepath = os.path.basename(os.path.realpath(__file__)) cur_file, ext = os.path.splitext(cur_filepath) filename = cur_file + ".h5" f = h5py.File(filename, 'r') params = {} for k in f.keys(): params[k] = np.array(f[k][:]) W1 = params["W1"] b1 = params["b1"] W2 = params["W2"] b2 = params["b2"] W3 = params["W3"] b3 = params["b3"] W4 = params["W4"] b4 = params["b4"] #测试用例样本数 test_m = x.shape[1] prediction_Y = np.zeros((1, test_m)) #计算 A1, Z1 = model.l_layer_forward_model(x, W1, b1, acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, W2, b2, acitvation="relu") #第2层 A3, Z3 = model.l_layer_forward_model(A2, W3, b3, acitvation="relu") #第3层 A4, Z4 = model.l_layer_forward_model(A3, W4, b4, acitvation="sigmoid") #第4层 test_Y = A4 # print(test_Y.shape) for i in range(test_Y.shape[1]): if test_Y[0][i] > 0.5: prediction_Y[0][i] = 1 else: prediction_Y[0][i] = 0 return prediction_Y
def predict_y(x, params): W1 = params["W1"] b1 = params["b1"] W2 = params["W2"] b2 = params["b2"] #测试用例样本数 test_m = x.shape[1] prediction_Y = np.zeros((1, test_m)) #计算 A1, Z1 = model.l_layer_forward_model(x, W1, b1, acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, W2, b2, acitvation="sigmoid") #第2层 test_Y = A2 # print(test_Y.shape) for i in range(test_Y.shape[1]): if test_Y[0][i] > 0.5: prediction_Y[0][i] = 1 else: prediction_Y[0][i] = 0 return prediction_Y
4, [20, 7, 5, 1], init_method="He") W1 = params["W1"] b1 = params["b1"] W2 = params["W2"] b2 = params["b2"] W3 = params["W3"] b3 = params["b3"] W4 = params["W4"] b4 = params["b4"] learning_rate = 0.0075 echo_num = 3000 for echo in range(echo_num): #正向传播 A1, Z1 = model.l_layer_forward_model(train_x, W1, b1, acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, W2, b2, acitvation="relu") #第2层 A3, Z3 = model.l_layer_forward_model(A2, W3, b3, acitvation="relu") #第3层 A4, Z4 = model.l_layer_forward_model(A3, W4, b4, acitvation="sigmoid") #第4层 #计算代价 J, dJ = model.cost_model(A4, train_y) #反向传播 dA4_prew, dW4, db4 = model.l_layer_backward_model( A3, W4, Z4, dJ, acitvation="sigmoid") #第4层 dA3_prew, dW3, db3 = model.l_layer_backward_model( A2, W3, Z3, dA4_prew, acitvation="relu") #第3层
# print(train_X.shape) test_x = test_x / 255 #参数初始化 params = model.params_init_model(train_X.shape[0], 4, [20, 7, 5, 1], init_method="He", seed=0) v, s = model.init_adam(params) learning_rate = 0.0075 # lambd=0.7 echo_num = 1000 grad = {} for echo in range(echo_num): #正向传播 A1, Z1 = model.l_layer_forward_model(train_X, params["W1"], params["b1"], acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, params["W2"], params["b2"], acitvation="relu") #第2层 A3, Z3 = model.l_layer_forward_model(A2, params["W3"], params["b3"], acitvation="relu") #第3层 A4, Z4 = model.l_layer_forward_model(A3, params["W4"], params["b4"], acitvation="sigmoid") #第4层 #计算代价
train_x = train_x / 255 test_x = test_x / 255 #参数初始化 params = model.params_init_model(train_x.shape[0], 2, [5, 1], init_method="He") W1 = params["W1"] b1 = params["b1"] W2 = params["W2"] b2 = params["b2"] learning_rate = 0.01 echo_num = 5000 for echo in range(echo_num): #正向传播 A1, Z1 = model.l_layer_forward_model(train_x, W1, b1, acitvation="relu") #第1层 A2, Z2 = model.l_layer_forward_model(A1, W2, b2, acitvation="sigmoid") #第2层 #计算代价 J, dJ = model.cost_model(A2, train_y) #反向传播 dA2_prew, dW2, db2 = model.l_layer_backward_model( A1, W2, Z2, dJ, acitvation="sigmoid") #第2层 dA1_prew, dW1, db1 = model.l_layer_backward_model( train_x, W1, Z1, dA2_prew, acitvation="relu") #第1层 #更新参数权值 # print("w",W.shape) # print("dw",dW.shape) W1 = W1 - learning_rate * dW1
if __name__ == "__main__": train_x, train_y, test_x, test_y, list_classes = load_dataset() #归一化 train_x = train_x / 255 test_x = test_x / 255 #参数初始化 params = model.params_init_model(train_x.shape[0], 1, [1]) W1 = params["W1"] b1 = params["b1"] learning_rate = 0.001 echo_num = 1000 for echo in range(echo_num): #正向传播 A1, Z1 = model.l_layer_forward_model(train_x, W1, b1, acitvation="sigmoid") #第1层 #计算代价 J, dJ = model.cost_model(A1, train_y) #反向传播 dA1_prew, dW1, db1 = model.l_layer_backward_model( train_x, W1, Z1, dJ, acitvation="sigmoid") #第1层 #更新参数权值 # print("w",W.shape) # print("dw",dW.shape) W1 = W1 - learning_rate * dW1 b1 = b1 - learning_rate * db1 print("echo {0} cost:{1}".format(echo, J))