דף זה תורגם על ידי Cloud Translation API.
Switch to English

TensorFlow Federated: למידת מכונה על נתונים מבוזרים

import tensorflow as tf
import tensorflow_federated as tff

# Load simulation data.
source, _ = tff.simulation.datasets.emnist.load_data()
def client_data(n):
  return source.create_tf_dataset_for_client(source.client_ids[n]).map(
      lambda e: (tf.reshape(e['pixels'], [-1]), e['label'])
  ).repeat(10).batch(20)

# Pick a subset of client devices to participate in training.
train_data = [client_data(n) for n in range(3)]

# Grab a single batch of data so that TFF knows what data looks like.
sample_batch = tf.nest.map_structure(
    lambda x: x.numpy(), iter(train_data[0]).next())

# Wrap a Keras model for use with TFF.
def model_fn():
  model = tf.keras.models.Sequential([
      tf.keras.layers.Dense(10, tf.nn.softmax, input_shape=(784,),
                            kernel_initializer='zeros')
  ])
  return tff.learning.from_keras_model(
      model,
      dummy_batch=sample_batch,
      loss=tf.keras.losses.SparseCategoricalCrossentropy(),
      metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])

# Simulate a few rounds of training with the selected client devices.
trainer = tff.learning.build_federated_averaging_process(
  model_fn,
  client_optimizer_fn=lambda: tf.keras.optimizers.SGD(0.1))
state = trainer.initialize()
for _ in range(5):
  state, metrics = trainer.next(state, train_data)
  print (metrics.loss)
  • TensorFlow Federated (TFF) היא מסגרת קוד פתוח ללימוד מכונה וחישובים אחרים על נתונים מבוזרים. TFF פותחה על מנת להקל על מחקר פתוח וניסויים עם למידה מאוחדת (FL) , גישה ללמידת מכונה שבה מודל מודל גלובלי משותף בקרב לקוחות משתתפים רבים השומרים על נתוני ההדרכה שלהם באופן מקומי. לדוגמא, FL שימשה לאימון דגמי חיזוי למקלדות ניידות מבלי להעלות נתוני הקלדה רגישים לשרתים.

    TFF מאפשר למפתחים לדמות את אלגוריתמי הלמידה המאוחדים הכלולים במודלים ובנתונים שלהם, כמו גם להתנסות באלגוריתמים חדשים. אבני הבניין המסופקות על ידי TFF יכולות לשמש גם ליישום חישובים שאינם למידה, כגון ניתוח מצטבר על פני נתונים מבוזרים. הממשקים של TFF מסודרים בשתי שכבות:

  • שכבה זו מציעה מערך ממשקים ברמה גבוהה המאפשרים למפתחים ליישם את היישומים הכלולים של הכשרה והערכה מאוחדות על מודלי TensorFlow הקיימים שלהם.
  • בבסיס המערכת מערך ממשקים ברמה נמוכה יותר לביטוי תמציתי של אלגוריתמים מאוחדים חדשים על ידי שילוב של TensorFlow עם מפעילי תקשורת מבוזרים בסביבת תכנות פונקציונלית מוקלדת מאוד. שכבה זו משמשת גם כבסיס שעליו בנינו למידה פדרציה.
  • TFF מאפשר למפתחים לבטא באופן חישובי חישובים מאוחדים, כך שהם יכולים להיות פרוסים לסביבות זמן ריצה מגוונות. כלול ב- TFF זמן ריצה של מכונה אחת לניסויים. אנא בקרו בהדרכות ונסו זאת בעצמכם!

    לשאלות ותמיכה, מצא אותנו בתג המאוחד של tensorflow ב- StackOverflow.