Некоторые подходы, которые я рассмотрел:
Наследование от класса модели Отобранный softmax в керах тензор-потока
Наследование от класса Layers Как я могу использовать выборочный softmax TensorFlowФункция потерь в модели Кераса?
Из двух подходов Модельный подход более чистый, так как подход к слоям немного хакерский - он выдвигает цель как часть ввода, а затем пока-output models.
Мне нужна помощь в создании подкласса класса Model - в частности: 1) В отличие от первого подхода - я хотел бы использовать любое количество слоев, как мы делаем при указании стандартной модели keras,Например,
class LanguageModel(tf.keras.Model):
def __init__(self, **kwargs)
2) Я хочу включить в класс модели приведенный ниже код, но хочу, чтобы класс Модели распознал, что
def call(self, y_true, input):
""" reshaping of y_true and input to make them fit each other """
input = tf.reshape(input, (-1,self.hidden_size))
y_true = tf.reshape(y_true, (-1,1))
weights = tf.Variable(tf.float64))
biases = tf.Variable(tf.float64)
loss = tf.nn.sampled_softmax_loss(
weights=weights,
biases=biases,
labels=labels,
inputs=inputs,
...,
partition_strategy="div")
logits = tf.matmul(inputs, tf.transpose(weights))
logits = tf.nn.bias_add(logits, biases)
y_predis = tf.nn.softmax_cross_entropy_with_logits_v2(
labels=inputs[1],
logits=logits)
3 Думаю, мне нужнонекоторые указатели, с какими разделами класса Model в функциональном API я должен связываться - зная, что я должен написать пользовательскую функцию потери, как описано выше.Я предполагаю, что проблема заключается в доступе к весам в функции tf.nn.sampledsoftmax