def gradient_dw(x,y,w,b,alpha,N):
'''In this function, we will compute the gardient w.r.to w '''
wt=w.transpose()
dw=x*(y-sigmoid(np.dot(wt,x)+b))-((alpha/N)*w)
return dw
def logloss(y_true,y_pred):
'''In this function, we will compute log loss '''
n=len(y_true)
loss=0
for i in range(n):
loss+=y_true[i]*math.log10(y_pred[i])+((1-y_true[i])*math.log10(1-y_pred[i]))
loss=-(loss/n)
return loss
def gradient_db(x,y,w,b):
'''In this function, we will compute gradient w.r.to b '''
wt=w.transpose()
db=y-sigmoid(np.dot(wt,x)+b)
return db
def train(X_train,y_train,X_test,y_test,epochs,alpha,eta0,N):
dim=X_train[0]
log_loss_train=[]
log_loss_test=[]
W=[]
B=[]
w,b = initialize_weights(dim)
for i in range(epochs):
for j in range(N):
W.append([gradient_dw(X_train[j],y_train[j],w,b,alpha,N)])
print("after w")
B.append([gradient_db(X_train[j],y_train[j],w,b)])
print("after b")
print(j)
#print(W)
#print(B)
y_train_predicted=pred(W,B,X_train)
log_loss_train=logloss(y_train,y_predicted)
train_loss.append([log_loss_train])
y_test_predicted=pred(W,B,X_test)
log_loss_test=logloss(y_test,y_predicted)
test_loss.append([log_loss_test])
return w,b
Пожалуйста, помогите мне в этом. Я получаю эту ошибку, и длина x_train предполагает 35000, вычисление останавливается на 34999.
в sigmoid (z) 2 '' 'В этой функции , мы вернем сигмоид z '' '3 # вычислим сигмоид (z) и вернем ----> 4 sig = 1 / (1 + math.exp (-z)) 5 return sig
TypeError : только массивы размера 1 могут быть преобразованы в Python скаляры