问题描述
这是一个简单的模型:
import numpy as np
import copy
def sigmoid(z):
return 1/(1+np.exp(-z))
我将权重和偏差初始化为零 此函数为 w 创建一个形状为 (dim,1) 的零向量,并将 b 初始化为 0。
参数: dim -- 我们想要的 w 向量的大小(或本例中的参数数量)
返回: w -- 形状的初始化向量 (dim,1) b -- 类型为 float 的初始化标量(对应于偏差)
def initialize_with_zeros(dim):
w = np.zeros((dim,1))
b = 0.
return w,b
该函数用于向前和向后传递
def propagate(w,b,X,Y):
m = X.shape[1]
# epsilon = 1e-5
A = sigmoid(np.dot(w.T,X) + b)
cost = (-1/m) * (np.dot(Y,np.log(A).T) + np.dot((1-Y),np.log(1-A).T))
dw = 1 / m *(np.dot(X,(A - Y ).T))
db = 1/m * (np.sum(A-Y))
cost = np.squeeze(np.array(cost))
grads = {"dw": dw,"db": db}
return grads,cost
该函数用于更新参数
def optimize(w,Y,num_iterations=100,learning_rate=0.009,print_cost=False):
w = copy.deepcopy(w)
b = copy.deepcopy(b)
costs = []
for i in range(num_iterations):
#gradient and cost calculations
grads,cost = propagate(w,Y)
#retrieve derivatives from grads
dw = grads["dw"]
db = grads["db"]
#update
w = w - learning_rate * dw
b = b - learning_rate * db
#record cost every 100th iterations
if i%100==0:
costs.append(cost)
if print_cost:
print("cost after %i:%f" %(i,cost))
params = {"w": w,"b": b}
grads = {"dw": dw,"db": db}
return params,grads,costs
该函数用于预测结果
def predict(w,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]):
if A[0][i] > 0.5:
Y_prediction[0][i] = 1.0
else:
Y_prediction[0][i] = 0.0
return Y_prediction
def logisticregressionmodel(X_train,Y_train,X_test,Y_test,num_iterations=2000,learning_rate=0.5,print_cost=False):
w,b = initialize_with_zeros(X_train.shape[0])
parameters,costs = optimize(w,X_train,num_iterations,learning_rate,print_cost)
w = parameters["w"]
b = parameters["b"]
Y_prediction_test = predict(w,X_test)
Y_prediction_train = predict(w,X_train)
# Print train/test Errors
if print_cost:
print("train accuracy: {} %".format(100 - np.mean(np.abs(Y_prediction_train - Y_train)) * 100))
print("test accuracy: {} %".format(100 - 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
#result
cost after 0:0.693147
cost after 100:nan
cost after 200:nan
cost after 300:nan
cost after 400:nan
cost after 500:nan
cost after 600:nan
cost after 700:nan
cost after 800:nan
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)