'Apply TFF tutorial to CIFAR100
I want to test this tutorial with CIFAR100:
I tune the hyper parameter to fit the CIFAR100 dataset, but it seems that the accuracy is decreased every rounds instead of increasing! And the range of accuracy is very low (0.09) after more than 80 rounds! and (0.02) after 200 rounds! (fluctuated)
Here is the code:
MAX_CLIENT_DATASET_SIZE = 500
CLIENT_EPOCHS_PER_ROUND = 1
CLIENT_BATCH_SIZE = 20
TEST_BATCH_SIZE = 100
def reshape_cifar_element(element):
return (tf.expand_dims(element['image'], axis=-1), element['coarse_label'])
def preprocess_train_dataset(dataset):
return (dataset
.shuffle(buffer_size=MAX_CLIENT_DATASET_SIZE)
.repeat(CLIENT_EPOCHS_PER_ROUND)
.batch(CLIENT_BATCH_SIZE, drop_remainder=False)
.map(reshape_cifar_element))
cifar_train, cifar_test = tff.simulation.datasets.cifar100.load_data(cache_dir=None)
cifar_train = cifar_train.preprocess(preprocess_train_dataset)
def create_original_fedavg_cnn_model(cache_dir=None):
data_format = 'channels_last'
max_pool = functools.partial(
tf.keras.layers.MaxPooling2D,
pool_size=(2, 2),
padding='same',
data_format=data_format)
conv2d = functools.partial(
tf.keras.layers.Conv2D,
kernel_size=5,
padding='same',
data_format=data_format,
activation=tf.nn.relu)
model = tf.keras.applications.resnet.ResNet101(include_top=False,
weights='imagenet',
input_tensor=None,
input_shape=(32,32,3),
pooling=max,
classes=20,
)
return model
input_spec = cifar_train.create_tf_dataset_for_client(
cifar_train.client_ids[0]).element_spec
def tff_model_fn():
keras_model = create_original_fedavg_cnn_model()
return tff.learning.from_keras_model(
keras_model=keras_model,
input_spec=input_spec,
loss=tf.keras.losses.SparseCategoricalCrossentropy(),
metrics=[tf.keras.metrics.SparseCategoricalAccuracy()])
# training the model
federated_averaging = tff.learning.build_federated_averaging_process(
model_fn=tff_model_fn,
client_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=0.1),
server_optimizer_fn=lambda: tf.keras.optimizers.SGD(learning_rate=5.0))
# utility function
def format_size(size):
size = float(size)
for unit in ['bit','Kibit','Mibit','Gibit']:
if size < 1024.0:
return "{size:3.2f}{unit}".format(size=size, unit=unit)
size /= 1024.0
return "{size:.2f}{unit}".format(size=size, unit='TiB')
def set_sizing_environment():
sizing_factory = tff.framework.sizing_executor_factory()
context = tff.framework.ExecutionContext(executor_fn=sizing_factory)
tff.framework.set_default_context(context)
return sizing_factory
def train(federated_averaging_process, num_rounds, num_clients_per_round, summary_writer):
environment = set_sizing_environment()
# Initialize the Federated Averaging algorithm to get the initial server state.
state = federated_averaging_process.initialize()
with summary_writer.as_default():
for round_num in range(num_rounds):
# Sample the clients parcitipated in this round.
sampled_clients = np.random.choice(
cifar_train.client_ids,
size=num_clients_per_round,
replace=False)
# Create a list of `tf.Dataset` instances from the data of sampled clients.
sampled_train_data = [
cifar_train.create_tf_dataset_for_client(client)
for client in sampled_clients
]
state, metrics = federated_averaging_process.next(state, sampled_train_data)
size_info = environment.get_size_info()
broadcasted_bits = size_info.broadcast_bits[-1]
aggregated_bits = size_info.aggregate_bits[-1]
print('round {:2d}, metrics={}, broadcasted_bits={}, aggregated_bits={}'.format(round_num, metrics, format_size(broadcasted_bits), format_size(aggregated_bits)))
# Add metrics to Tensorboard.
for name, value in metrics['train'].items():
tf.summary.scalar(name, value, step=round_num)
# Add broadcasted and aggregated data size to Tensorboard.
tf.summary.scalar('cumulative_broadcasted_bits', broadcasted_bits, step=round_num)
tf.summary.scalar('cumulative_aggregated_bits', aggregated_bits, step=round_num)
summary_writer.flush()
# Clean the log directory to avoid conflicts.
try:
tf.io.gfile.rmtree('/tmp/logs/scalars')
except tf.errors.OpError as e:
pass # Path doesn't exist
# Set up the log directory and writer for Tensorboard.
logdir = "/tmp/logs/scalars/original/"
summary_writer = tf.summary.create_file_writer(logdir)
train(federated_averaging_process=federated_averaging, num_rounds=100,
num_clients_per_round=10, summary_writer=summary_writer)
Here is the output:
round 0, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01165), ('loss', 9.618461), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=12.71Gibit, aggregated_bits=12.68Gibit
round 1, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.05465), ('loss', 7.961828), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=25.43Gibit, aggregated_bits=25.36Gibit
round 2, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0019), ('loss', 6.3175845), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=38.14Gibit, aggregated_bits=38.05Gibit
round 3, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.03435), ('loss', 6.317787), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=50.85Gibit, aggregated_bits=50.73Gibit
round 4, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0226), ('loss', 6.2073708), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=63.57Gibit, aggregated_bits=63.41Gibit
round 5, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01405), ('loss', 6.06909), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=76.28Gibit, aggregated_bits=76.09Gibit
round 6, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0513), ('loss', 5.902921), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=88.99Gibit, aggregated_bits=88.77Gibit
round 7, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0109), ('loss', 5.7842383), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=101.71Gibit, aggregated_bits=101.45Gibit
round 8, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.04715), ('loss', 5.8524485), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=114.42Gibit, aggregated_bits=114.14Gibit
round 9, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.02165), ('loss', 5.5357785), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=127.13Gibit, aggregated_bits=126.82Gibit
round 10, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0151), ('loss', 5.2708006), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=139.84Gibit, aggregated_bits=139.50Gibit
round 11, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.18965), ('loss', 5.2840123), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=152.56Gibit, aggregated_bits=152.18Gibit
round 12, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0315), ('loss', 4.878761), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=165.27Gibit, aggregated_bits=164.86Gibit
round 13, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.1567), ('loss', 4.67198), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=177.98Gibit, aggregated_bits=177.54Gibit
round 14, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.03105), ('loss', 4.159812), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=190.70Gibit, aggregated_bits=190.23Gibit
round 15, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.00275), ('loss', 3.7448847), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=203.41Gibit, aggregated_bits=202.91Gibit
round 16, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0038), ('loss', 3.7639444), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=216.12Gibit, aggregated_bits=215.59Gibit
round 17, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0076), ('loss', 3.7399879), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=228.84Gibit, aggregated_bits=228.27Gibit
round 18, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.05845), ('loss', 3.772387), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=241.55Gibit, aggregated_bits=240.95Gibit
round 19, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0508), ('loss', 3.7920141), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=254.26Gibit, aggregated_bits=253.63Gibit
round 20, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.04465), ('loss', 3.5729136), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=266.98Gibit, aggregated_bits=266.32Gibit
round 21, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0457), ('loss', 3.6324546), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=279.69Gibit, aggregated_bits=279.00Gibit
round 22, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.12605), ('loss', 3.7194586), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=292.40Gibit, aggregated_bits=291.68Gibit
round 23, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.08765), ('loss', 3.6164575), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=305.12Gibit, aggregated_bits=304.36Gibit
round 24, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0782), ('loss', 3.5728798), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=317.83Gibit, aggregated_bits=317.04Gibit
round 25, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0228), ('loss', 3.5980206), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=330.54Gibit, aggregated_bits=329.73Gibit
round 26, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.05445), ('loss', 3.5839736), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=343.25Gibit, aggregated_bits=342.41Gibit
round 27, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.09335), ('loss', 3.7678525), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=355.97Gibit, aggregated_bits=355.09Gibit
round 28, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01695), ('loss', 3.785364), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=368.68Gibit, aggregated_bits=367.77Gibit
round 29, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0179), ('loss', 3.891886), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=381.39Gibit, aggregated_bits=380.45Gibit
round 30, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0161), ('loss', 3.873465), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=394.11Gibit, aggregated_bits=393.13Gibit
round 31, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0665), ('loss', 3.6538444), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=406.82Gibit, aggregated_bits=405.82Gibit
round 32, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0366), ('loss', 3.7498267), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=419.53Gibit, aggregated_bits=418.50Gibit
round 33, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0038), ('loss', 3.5695012), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=432.25Gibit, aggregated_bits=431.18Gibit
round 34, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01895), ('loss', 3.6070354), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=444.96Gibit, aggregated_bits=443.86Gibit
round 35, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.00565), ('loss', 3.7948637), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=457.67Gibit, aggregated_bits=456.54Gibit
round 36, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01225), ('loss', 3.7862086), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=470.39Gibit, aggregated_bits=469.22Gibit
round 37, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.1948), ('loss', 3.687525), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=483.10Gibit, aggregated_bits=481.91Gibit
round 38, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0097), ('loss', 3.6151993), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=495.81Gibit, aggregated_bits=494.59Gibit
round 39, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.11255), ('loss', 3.6215568), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=508.53Gibit, aggregated_bits=507.27Gibit
round 40, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0119), ('loss', 3.7737968), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=521.24Gibit, aggregated_bits=519.95Gibit
round 41, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01285), ('loss', 3.6574495), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=533.95Gibit, aggregated_bits=532.63Gibit
round 42, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.00095), ('loss', 3.333803), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=546.66Gibit, aggregated_bits=545.31Gibit
round 43, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0181), ('loss', 3.6864824), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=559.38Gibit, aggregated_bits=558.00Gibit
round 44, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01515), ('loss', 3.5728378), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=572.09Gibit, aggregated_bits=570.68Gibit
round 45, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.03685), ('loss', 3.4976869), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=584.80Gibit, aggregated_bits=583.36Gibit
round 46, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0882), ('loss', 3.6385386), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=597.52Gibit, aggregated_bits=596.04Gibit
round 47, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0436), ('loss', 3.600955), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=610.23Gibit, aggregated_bits=608.72Gibit
round 48, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.06105), ('loss', 3.7713816), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=622.94Gibit, aggregated_bits=621.41Gibit
round 49, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0095), ('loss', 3.5059297), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=635.66Gibit, aggregated_bits=634.09Gibit
round 50, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.05925), ('loss', 3.4547052), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=648.37Gibit, aggregated_bits=646.77Gibit
round 51, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.1059), ('loss', 3.6679363), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=661.08Gibit, aggregated_bits=659.45Gibit
round 52, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0769), ('loss', 3.8321998), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=673.80Gibit, aggregated_bits=672.13Gibit
round 53, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.1005), ('loss', 3.588381), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=686.51Gibit, aggregated_bits=684.81Gibit
round 54, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.07015), ('loss', 3.6704624), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=699.22Gibit, aggregated_bits=697.50Gibit
round 55, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.06945), ('loss', 3.4919791), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=711.94Gibit, aggregated_bits=710.18Gibit
round 56, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.12295), ('loss', 3.6123528), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=724.65Gibit, aggregated_bits=722.86Gibit
round 57, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0408), ('loss', 3.5504036), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=737.36Gibit, aggregated_bits=735.54Gibit
round 58, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.04455), ('loss', 3.552691), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=750.07Gibit, aggregated_bits=748.22Gibit
round 59, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0207), ('loss', 3.7144353), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=762.79Gibit, aggregated_bits=760.90Gibit
round 60, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.23375), ('loss', 3.8327348), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=775.50Gibit, aggregated_bits=773.59Gibit
round 61, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0882), ('loss', 3.811276), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=788.21Gibit, aggregated_bits=786.27Gibit
round 62, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0574), ('loss', 3.8322363), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=800.93Gibit, aggregated_bits=798.95Gibit
round 63, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.2515), ('loss', 3.6164472), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=813.64Gibit, aggregated_bits=811.63Gibit
round 64, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.01505), ('loss', 3.5283866), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=826.35Gibit, aggregated_bits=824.31Gibit
round 65, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.05415), ('loss', 3.656778), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=839.07Gibit, aggregated_bits=836.99Gibit
round 66, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.03015), ('loss', 3.5999403), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=851.78Gibit, aggregated_bits=849.68Gibit
round 67, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0042), ('loss', 3.6095235), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=864.49Gibit, aggregated_bits=862.36Gibit
round 68, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.02245), ('loss', 3.6069655), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=877.21Gibit, aggregated_bits=875.04Gibit
round 69, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.0494), ('loss', 3.6805723), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=889.92Gibit, aggregated_bits=887.72Gibit
round 70, metrics=OrderedDict([('broadcast', ()), ('aggregation', OrderedDict([('mean_value', ()), ('mean_weight', ())])), ('train', OrderedDict([('sparse_categorical_accuracy', 0.02085), ('loss', 3.6121976), ('num_examples', 1000), ('num_batches', 50)]))]), broadcasted_bits=902.63Gibit, aggregated_bits=900.40Gibit
NOTE:
I'm using resent instead of CNN from the tutorial. But it seems even when I use CNN I have the same issue! Although I test this tutorial with EMNIST and I got accuracy more than 0.86 in 100 rounds! But when applying CIFAR with some changes I got very low accuracy!
Does my tuning for the parameters is the reason? How can I tuning them in this tutorial?
Appreciate your help!
Sources
This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.
Source: Stack Overflow
Solution | Source |
---|