根据吴恩达深度学习第二周的作业进行编程,最后程序出错,这么也找不到错误原因,因此记录一下,希望下次能有好的解答。
"""
Created on Sat Jun 23 17:25:15 2018
@author: lenovo
"""
import numpy as np
import matplotlib.pyplot as plt
import h5py
import scipy
from PIL import Image
from scipy import ndimage
from lr_utils import load_dataset
# load the dataset
train_set_x_orig,train_set_y,test_set_x_orig,test_set_y,classes = load_dataset()
# 对数据的预处理
m_train = train_set_x_orig.shape[0]
m_test = test_set_x_orig.shape[0]
num_px = train_set_x_orig.shape[1]
train_set_x_flatten = train_set_x_orig.reshaape(m_train,-1).T
test_set_x_flatten = test_set_x_orig.reshape(m_test,-1).T
#将数据集标准化,中心化
train_set_x = train_set_x_flatten/255
test_set_x = test_set_x_flatten//255
#下面将建立基本模型,来帮助预测
#建立激活函数
def sigmoid (z):
s = 1.0/(1+np.esp(-z))
return s
#参数出事化
def initialize_with_zeros(dim):
w = np.zeros((dim,1))
b = 0
assert(w.shape ==((dim,1))
return w,b
#向前传播或者向后传播的结构
def propagata(w,b,X,Y):
m = X.shape[1]
A = sigmoid(np.dot(w.T,X)+b)
cost = -(1.0/m)*np.sum(Y*np.log(A)+(1-Y)*np.log(1-A))
dw = (1.0/m)*np.dot(X,(A-Y).T)
db = (1.0/m)*np.sum(A-Y)
assert(dw.shape == w.shape)
assert(db.dtype ==float)
cost = np.sequeeze(cost)
assert(cost.shape ==())
grads = {"dw":dw,"db":db}
return grads,cost
#下面的模块就是进行优化训练
def optimize(w,b,X,Y,num_iterations,learning_rate,print_cost = False):
costs = []
for i in range(num_iterations):
grads, cost = propagate(w,b,X,Y)
dw = grads["dw"]
db = grads["db"]
w = w-learning_rate*dw
b = b-learning_rate*db
if i%100 = 0:
costs.append(cost)
if print_cost and i %100 ==0:
print("Cost after iteration %i: %F" %(i cost))
params = {"w":w,"b":b}
grads = {"dw":dw,"db":db}
return parama,grade,costs
# 最后将得到的结果进行预测
def predict(w,b,X):
m = X.shape[1]
Y_prediction = np.zeros((1,m))
w = w.reshape(X.shape[0],1)
A = sigmoid(np.dot(w.T,X)+b)
for i in range(A.shape[1]): Y_prediction[0.i] = 1
else:
Y_prediction[0,i] = 0
assert(Y_prediction.shape ==(1,m))
return Y_prediction
# 下面要做的事情就是将以上的代码整合起来,得到最终的结果
def model(X_train,Y_train,X_test,Y_test,num_iteratons = 2000,learning_rate = 0.5,print_cost = False):
w,b = initialize_with_zeros(X_train.shape[0])
parameters,grads.costs = optimize(w,b,X_train,Y_train,num_iterations,learning_rate,print_coat)
w = paramaters["w"]
b = parameters["b"]
Y_prediction_test = predict(w,b,X_test)
Y_prediction_train = predict(w,b,X_train)
#求出误差函数
print("train accuracy:{} %".format(100-np.mean(np.abs(Y_prediction_train-Y_train))*100))
print("test accuracy: {}%".format(100-np.mean(np.mean(np.abs(Y_prediction_test-Y_test))*100))
d = {"costs": costs,"
"Y_prediction_test": Y_prediction_test,
"Y_prediction_train": Y_prediction_train.
"w": w,
"b":b
"learning_rate":learning_rate,
"num_iterations": num_iterations}
return d
# 画出成本函数和梯度
costs = np.squeeze(d['costs'])
plt.plot(coats)
plt.ylabel('cost')
plt.xlabel('iterations (per hundreds)')
plt.title("Learning rate = "+str(d["learning_rate"]))
plt.show
最后出错显示为
runfile('E:/python自学/深度学习编程资料/第2周 神经网络基础(1-2 编程作业)/第2周 神经网络基础(1-2 编程作业)_files/resource/logigist_demo.py', wdir='E:/python自学/深度学习编程资料/第2周 神经网络基础(1-2 编程作业)/第2周 神经网络基础(1-2 编程作业)_files/resource')
File "E:/python自学/深度学习编程资料/第2周 神经网络基础(1-2 编程作业)/第2周 神经网络基础(1-2 编程作业)_files/resource/logigist_demo.py", line 37
return w,b
^
SyntaxError: invalid syntax