Answered step by step
Verified Expert Solution
Link Copied!

Question

1 Approved Answer

Is this code correct? import tensorflow as tf import numpy as np def read _ parse _ a 9 a ( ) : labels =

Is this code correct?
import tensorflow as tf
import numpy as np
def read_parse_a9a():
labels =[]
data =[]
with open("a9a.txt") as f: #ijcnn1.txt, a9a.txt
for line in f:
xs = line.split("")
h =[0.0]*123
for s in xs[1:]:
s = s.strip()
if len(s)==0:
continue
(k,v)= s.split(":")
h[int(k)-1]= float(v)
data.append(h)
if xs[0]=="+1":
labels.append(1)
else:
labels.append(0)
return (data, labels)
def prediction(w, data):
return 1/(1+np.exp(-np.dot(w,data.transpose())))
#computes the average logloss for given prediction
def logloss(pred, labels):
Li=-((labels*np.log(pred))+((1-labels)*np.log(1-pred)))
return sum(Li)/len(pred)
def gradient(n, w, data, labels):
return 1/ n * np.dot(data.transpose(),(prediction(w,data)- labels))
n=123 #number of features
features, labels = read_parse_a9a()
features=np.array(features)
labels = np.array(labels)
B=np.eye(n) #use either identity or compute Hessian in first step for BFGS
w=np.zeros(n) #initialize weight vector
predictions=prediction(w,features)
loss=logloss(predictions,labels)
grad=gradient(n,w,features,labels)
print("Initial gradient shape:", grad.shape)
Initial gradient shape: (123,)
def wolfe(w, p, data, labels, grad_f=gradient, loss_f=logloss, pred_f=prediction, alpha=1.0, c1=0.001, c2=0.9):
grad_w=grad_f(len(w), w, data, labels)
for i in range(1000):
if loss_f(pred_f(w+alpha*p, data), labels)> logloss(pred_f(w, data), labels)+c1*alpha*np.dot(grad_w, p):
alpha *=0.5
elif np.dot(grad_f(len(w), w+alpha*p, data, labels), p)< c2* np.dot(grad_w, p):
alpha *=2.1
elif i >999:
raise Exception("wolfe doesn't finish")
else:
break
return alpha
def dfp(w_0, B_0, data, labels, pred_f=prediction, grad_f=gradient, loss_f=logloss, max_iter=100, tol=0.0001):
w = w_0
B_inv = np.linalg.inv(B_0) # We only compute the inverse at initialization
grad_w = grad_f(len(w), w, data, labels)
for i in range(max_iter):
# Step 1:
p =-np.dot(B_inv, grad_w) # Use np.dot instead of np.outer
# Step 2:
alpha = wolfe(w, p, data, labels)
# Step 3:
s = alpha * p
w_new = w + s
grad_new = grad_f(len(w), w_new, data, labels)
# Step 4:
if np.linalg.norm(grad_new - grad_w)< tol:
break
y = grad_new - grad_w
grad_w = grad_new
sy = np.dot(s, y)
# Step 5(DFP Update):
Bs = np.dot(B_inv, s)
B_inv = B_inv + np.outer(s, s)/ np.dot(s, y)- np.outer(Bs, Bs)/ np.dot(s, Bs)
# Step 6(print):
predictions = pred_f(w, data)
loss = loss_f(predictions, labels)
print("iter:", i," loss:", loss)
w = w_new
return w
n =123
print("DFP")
dfp(np.zeros(n), np.eye(n), features, labels)
DFP
iter: 0 loss: 0.693147180560079
iter: 1 loss: 0.5292530545167842
iter: 2 loss: nan
iter: 3 loss: 3.5410760939547634
iter: 4 loss: nan
iter: 5 loss: 5.358308161688495
C:\Users\Mirka\AppData\Local\Temp\ipykernel_13004\605386739.py:3: RuntimeWarning: divide by zero encountered in log
Li=-((labels*np.log(pred))+((1-labels)*np.log(1-pred)))
C:\Users\Mirka\AppData\Local\Temp\ipykernel_13004\605386739.py:3: RuntimeWarning: invalid value encountered in multiply
Li=-((labels*np.log(pred))+((1-labels)*np.log(1-pred)))
iter: 6 loss: nan
iter: 7 loss: nan
iter: 8 loss: nan
iter: 9 loss: nan
iter: 10 loss: inf
iter: 11 loss: nan
iter: 12 loss: nan
iter: 13 loss: inf
iter: 14 loss: nan
iter: 15 loss: 7.391548466851556
iter: 16 loss: nan
iter: 17 loss: nan
iter: 18 loss: 7.219118683233256
iter: 19 loss: nan
iter: 20 loss: 1.9819447503890504
iter: 21 loss: nan
iter: 22 loss: 2.435944655812197
iter: 23 loss: 1.6211073060149195
iter: 24 loss: 1.281807059361977
iter: 25 loss: 1.0287540152733297
iter: 26 loss: 0.7616105043704977
iter: 27 loss: 0.7157585926858517
iter: 28 loss: 0.694489184<

Step by Step Solution

There are 3 Steps involved in it

Step: 1

blur-text-image

Get Instant Access to Expert-Tailored Solutions

See step-by-step solutions with expert insights and AI powered tools for academic success

Step: 2

blur-text-image

Step: 3

blur-text-image

Ace Your Homework with AI

Get the answers you need in no time with our AI-driven, step-by-step assistance

Get Started

Recommended Textbook for

Graph Databases

Authors: Ian Robinson, Jim Webber, Emil Eifrem

1st Edition

1449356265, 978-1449356262

More Books

Students also viewed these Databases questions

Question

Every subspace S of a linear space is linearly dependent.

Answered: 1 week ago