writer = csv.writer(f) errors_per_iteration = list() it = list() for i in range(iterations): print(i) new_w = w - (learning_rate) * rss_gradient(w,X_train,y_train) learning_rate, w = update_learning_rate(learning_rate,w,new_w,X_train,y_train) # Send w to all neighbors, receive other nodes' w for recipient in m.getNeighbors().keys(): message = { 'weights' : w, 'sync' : i } m.sendMessage(recipient,message) m.waitForMessageFromAllNeighbors(i) a = w.shape[0] vector_sum = np.zeros((a,1),dtype=float) for message in m.sync[i]: vector_sum = vector_sum + message['weights'] vector_sum = vector_sum[0] size = float(len(m.sync[i])) w = vector_sum * (1.0 / size) y_est = np.dot(X_test,w)
m.start() def setState(state): m.lifeState = state if state: led.setRedOn() else: led.setRedOff() setState(random.randint(0, 1) == True) i = 0 while True: i += 1 for neighbor in m.getNeighbors().keys(): message = { 'state': m.lifeState, 'sync': i } m.sendMessage(neighbor, message) m.waitForMessageFromAllNeighbors(i) c = sum(n['state'] for n in m.sync[i]) if c <= 1 or c >= 4: setState(False) if c == 3: setState(True)
m.registerCallbackSync() m.start() def setState(state): m.lifeState = state if state: led.setRedOn() else: led.setRedOff() setState(random.randint(0, 1) == True) i = 0 while True: i += 1 for neighbor in m.getNeighbors().keys(): message = {'state': m.lifeState, 'sync': i} m.sendMessage(neighbor, message) m.waitForMessageFromAllNeighbors(i) c = sum(n['state'] for n in m.sync[i]) if c <= 1 or c >= 4: setState(False) if c == 3: setState(True)
# Demo of Messager class. # run with: DEVICE_ID=1 python sample.py import os import time from clustermessaging.Messager import Messager m = Messager() def callback(message, name): print('Message Received from %s! %s' % (name, message)) if os.environ['DEVICE_ID'] == '2': print('registering callback') m.registerCallback(callback) else: print('sending message') m.sendMessage('2', 'hello, 2, i am %s' % m.getOwnName()) m.start()
# Create x vector nodes = len(assignment) x = np.zeros(nodes,dtype=float) x[ID-1] = my_val # Insert own value iterations = 10 for i in range(iterations): # time.sleep(1) # All of the communication to neighbors for recipient in m.getNeighbors().keys(): message = { 'value' : my_val, 'sync' : i } m.sendMessage(recipient,message) m.waitForMessageFromAllNeighbors(i) # Construct X for message in m.sync[i]: node = int(message['from']) value = float(message['value']) x[node-1] = value my_val = np.dot(w,x) x[ID-1] = my_val print(my_val)