ve üç fonksiyonları içine modeli bölmek için olan yapılanma modeli kodu için önemli desen Derslikler:
train(loss, ...)
Bu desen, örneğin (code, tutorial) için cifar-10 Öğreticisi kullanılır inputs = tf.placeholder(...)
logits = mymodel.inference(inputs, ...)
loss = mymodel.loss(logits, ...)
train = mymodel.train(loss, ...)
: r eğitimi, kod aşağıdaki gibi görünecektir.
Yanıp sönen bir şey, inference
ve loss
işlevi arasındaki (Python) değişkenleri paylaşamayacağınız gerçektir. Tensorflow'un tam olarak bu kullanım için Graph collections sağladığından, bu daha büyük bir sorun değil, çünkü daha temiz bir tasarım için (mantıklı bir şekilde sizi gruplandırır). Bunun başlıca kullanım amaçlarından biri düzenlileştirme geçerli:
zaten tüm düzenlileştirme cezaları varsayılan olarak koleksiyona tf.GraphKeys.REGULARIZATION_LOSSES
için (source) eklenecektir beri, ne gerek var layers
modülünü (örn tf.layers.conv2d
) kullanıyorsanız.
conv1 = tf.layers.conv2d(
inputs,
filters=96,
kernel_size=11,
strides=4,
activation=tf.nn.relu,
kernel_initializer=tf.truncated_normal_initializer(stddev=0.01),
kernel_regularizer=tf.contrib.layers.l2_regularizer(),
name='conv1')
Sen kaybedersin bu o gibi görünebilir: Örneğin: Bunu yaparken
def loss(logits, labels):
softmax_loss = tf.losses.softmax_cross_entropy(
onehot_labels=labels,
logits=logits)
regularization_loss = tf.add_n(tf.get_collection(
tf.GraphKeys.REGULARIZATION_LOSSES)))
return tf.add(softmax_loss, regularization_loss)
Eğer katmanlar modülünü kullanmıyorsanız, el (sadece olduğu gibi koleksiyon doldurmak zorunda kalacak bağlı kaynak snippet'i). Temel olarak tf.add_to_collection
kullanarak koleksiyona cezalar eklemek istiyorum: Bu grubu
tf.add_to_collection(tf.GraphKeys.REGULARIZATION_LOSSES, reg_penalty)
sadece yukarıdaki gibi düzenlileştirme cezaları dahil kaybını hesaplayabilir.
Soru çok geniş değil. Google'da Tensorflow ve oradan birileri yapı modellerini yapılandırmak için güzel olurdu. –