![]() |
Calcula o coeficiente de correlação de classificação Tau-c de Kendall.
tfa.metrics.KendallsTauC( actual_min: float = 0.0, actual_max: float = 1.0, preds_min: float = 0.0, preds_max: float = 1.0, actual_cutpoints: int = 100, preds_cutpoints: int = 100, name: str = None, dtype:tfa.types.AcceptableDTypes= Nenhum)
Uso:
reais = tf.constant([12, 2, 1, 12, 2], dtype=tf.int32)
preds = tf.constant([1, 4, 7, 1, 0], dtype=tf.int32)
m = tfa.metrics.KendallsTauC(0, 13, 0, 8)
m.update_state(reais, preds)
m.result().numpy()
-0,48000002
Métodos
add_loss
add_loss(perdas, **kwargs)
Adicione o(s) tensor(es) de perda, potencialmente dependentes das entradas da camada.
Algumas perdas (por exemplo, perdas de regularização de atividade) podem ser dependentes das entradas passadas na chamada de uma camada. Portanto, ao reutilizar a mesma camada em diferentes entradasa
eb
, algumas entradas emcamada.perdas
pode ser dependente dea
e alguns emb
. Esse método automaticamente acompanha as dependências.
Este método pode ser usado dentro de uma camada de subclasse ou modelochamar
função, caso em queperdas
deve ser um tensor ou uma lista de tensores.
Exemplo:
class MyLayer(tf.keras.layers.Layer): def call(self, inputs): self.add_loss(tf.abs(tf.reduce_mean(inputs))) return inputs
O mesmo código funciona no treinamento distribuído: a entrada paraadd_loss()
é tratado como uma perda de regularização e é calculada a média entre as réplicas pelo loop de treinamento (ambos integradosModel.fit()e loops de treinamento personalizados compatíveis).
Oadd_loss
O método também pode ser chamado diretamente em um Modelo Funcional durante a construção. Nesse caso, qualquer tensor de perda passado para este modelo deve ser simbólico e poder ser rastreado até o modeloEntrada
s. Essas perdas passam a fazer parte da topologia do modelo e são rastreadas emget_config
.
Exemplo:
entradas = tf.keras.Input(shape=(10,))x = tf.keras.layers.Dense(10)(entradas)saídas = tf.keras.layers.Dense(1)(x)model = tf.keras .Model(inputs, outputs)# Activity regularization.model.add_loss(tf.abs(tf.reduce_mean(x)))
Se este não for o caso da sua perda (se, por exemplo, a sua perda se referir a umVariável
de uma das camadas do modelo), você pode agrupar sua perda em um lambda sem argumentos. Essas perdas não são rastreadas como parte da topologia do modelo, pois não podem ser serializadas.
Exemplo:
entradas = tf.keras.Input(shape=(10,))d = tf.keras.layers.Dense(10)x = d(entradas)saídas = tf.keras.layers.Dense(1)(x)model = tf.keras.Model(inputs, outputs)# Weight regularization.model.add_loss(lambda: tf.reduce_mean(d.kernel))
argumentos | |
---|---|
perdas | Tensor de perda ou lista/tupla de tensores. Em vez de tensores, as perdas também podem ser chamadas de argumento zero que criam um tensor de perda. |
**quargs | Usado apenas para compatibilidade com versões anteriores. |
add_metric
add_metric(valor, nome=Nenhum, **kwargs)
Adiciona tensor métrico à camada.
Este método pode ser usado dentro dochamar()
método de uma camada subclassificada ou modelo.
class MyMetricLayer(tf.keras.layers.Layer): def __init__(self): super(MyMetricLayer, self).__init__(name='my_metric_layer') self.mean = tf.keras.metrics.Mean(name='metric_1' ) def call(self, inputs): self.add_metric(self.mean(inputs)) self.add_metric(tf.reduce_sum(inputs), name='metric_2') return inputs
Este método também pode ser chamado diretamente em um Modelo Funcional durante a construção. Nesse caso, qualquer tensor passado para este modelo deve ser simbólico e poder ser rastreado até o modeloEntrada
s. Essas métricas tornam-se parte da topologia do modelo e são rastreadas quando você salva o modelo viasalvar()
.
entradas = tf.keras.Input(shape=(10,))x = tf.keras.layers.Dense(10)(entradas)saídas = tf.keras.layers.Dense(1)(x)model = tf.keras .Model(entradas, saídas)model.add_metric(math_ops.reduce_sum(x), name='metric_1')
entradas = tf.keras.Input(shape=(10,))x = tf.keras.layers.Dense(10)(entradas)saídas = tf.keras.layers.Dense(1)(x)model = tf.keras .Model(entradas, saídas)model.add_metric(tf.keras.metrics.Mean()(x), name='metric_1')
argumentos | |
---|---|
valor | Tensor métrico. |
nome | Nome da métrica de string. |
**quargs | Argumentos de palavras-chave adicionais para compatibilidade com versões anteriores.Valores aceitos:agregação - Quando ovalor tensor fornecido não é o resultado da chamada de umKeras. Métrica instância, ele será agregado por padrão usando umkeras.Metric.Mean . |
construir
build(forma_de_entrada)
Cria as variáveis da camada (para implementadores de subclasse).
Este é um método que implementadores de subclasses deCamada
ouModelo
podem substituir se precisarem de uma etapa de criação de estado entre a instanciação da camada e a chamada da camada. Ele é invocado automaticamente antes da primeira execução dechamar()
.
Isso é normalmente usado para criar os pesos deCamada
subclasses (a critério do implementador da subclasse).
argumentos | |
---|---|
input_shape | Instancia deTensorForma , ou lista de instâncias deTensorForma se a camada espera uma lista de entradas (uma instância por entrada). |
build_from_config
build_from_config (configuração)
computa_mask
compute_mask (entradas, máscara = Nenhum)
Calcula um tensor de máscara de saída.
argumentos | |
---|---|
entradas | Tensor ou lista de tensores. |
mascarar | Tensor ou lista de tensores. |
devoluções | |
---|---|
Nenhum ou um tensor (ou lista de tensores, um por tensor de saída da camada). |
compute_output_shape
computer_output_shape (input_shape)
Calcula a forma de saída da camada.
Este método fará com que o estado da camada seja construído, caso isso não tenha acontecido antes. Isso requer que a camada seja usada posteriormente em entradas que correspondam à forma de entrada fornecida aqui.
argumentos | |
---|---|
input_shape | Forma tupla (tupla de números inteiros) outf.TensorShape,ou estrutura de tuplas de forma /tf.TensorShapeinstâncias (uma por tensor de saída da camada). As tuplas de forma podem incluir None para dimensões livres, em vez de um número inteiro. |
devoluções | |
---|---|
Atf.TensorShapeinstância ou estrutura detf.TensorShapeinstâncias. |
count_params
count_params()
Conte o número total de escalares que compõem os pesos.
devoluções | |
---|---|
Uma contagem inteira. |
Levanta | |
---|---|
ValueError | se a camada ainda não estiver construída (neste caso, seus pesos ainda não foram definidos). |
from_config
@classmethod
from_config (configuração)
Cria uma camada a partir de sua configuração.
Este método é o inverso doget_config
,capaz de instanciar a mesma camada do configdictionary. Não lida com conectividade de camada (tratada pela rede), nem pesos (tratada porset_weights
).
argumentos | |
---|---|
configuração | Um dicionário Python, geralmente a saída de get_config. |
devoluções | |
---|---|
Uma instância de camada. |
get_build_config
get_build_config()
get_config
get_config()
Retorna a configuração serializável da métrica.
get_weights
get_weights()
Retorna os pesos atuais da camada, como matrizes NumPy.
Os pesos de uma camada representam o estado da camada. Essa função retorna valores de peso treináveis e não treináveis associados a essa camada como uma lista de arrays NumPy, que por sua vez podem ser usados para carregar o estado em camadas com parâmetros semelhantes.
Por exemplo, umDenso
layer retorna uma lista de dois valores: a kernelmatrix e o vetor bias. Estes podem ser usados para definir os pesos de outroDenso
camada:
layer_a = tf.keras.layers.Dense(1,
kernel_initializer=tf.constant_initializer(1.))
a_out = layer_a(tf.convert_to_tensor([[1., 2., 3.]]))
layer_a.get_weights()
[matriz([[1.],
[1.],
[1.]], dtype=float32), array([0.], dtype=float32)]
layer_b = tf.keras.layers.Dense(1,
kernel_initializer=tf.constant_initializer(2.))
b_out = layer_b(tf.convert_to_tensor([[10., 20., 30.]]))
layer_b.get_weights()
[matriz([[2.],
[2.],
[2.]], dtype=float32), array([0.], dtype=float32)]
layer_b.set_weights(layer_a.get_weights())
layer_b.get_weights()
[matriz([[1.],
[1.],
[1.]], dtype=float32), array([0.], dtype=float32)]
devoluções | |
---|---|
Pesos valores como uma lista de matrizes NumPy. |
mesclar_estado
merge_state (métricas)
Mescla o estado de uma ou mais métricas.
Este método pode ser usado por sistemas distribuídos para mesclar o estado computado por diferentes instâncias de métricas. Normalmente, o estado será armazenado na forma dos pesos da métrica. Por exemplo, a métrica atf.keras.metrics.Mean contém uma lista de dois valores de ponderação: um total e uma contagem. Se houvesse duas instâncias de atf.keras.metrics.Accuracy em que cada estado parcial agregado independentemente para um cálculo de precisão geral, esses dois estados de métrica poderiam ser combinados da seguinte forma:
m1 = tf.keras.metrics.Accuracy()
_ = m1.update_state([[1], [2]], [[0], [2]])
m2 = tf.keras.metrics.Accuracy()
_ = m2.update_state([[3], [4]], [[3], [4]])
m2.merge_state([m1])
m2.result().numpy()
0,75
argumentos | |
---|---|
Métricas | um iterável de métricas. As métricas devem ter estado compatível. |
Levanta | |
---|---|
ValueError | Se o iterável fornecido não contiver métricas correspondentes às especificações necessárias da métrica. |
reset_state
reset_state()
Redefine todas as variáveis de estado da métrica.
reset_states
reset_states()
resultado
resultado()
Calcula e retorna o tensor do valor métrico escalar ou um dict de escalares.
A computação do resultado é uma operação idempotente que simplesmente calcula o valor da métrica usando as variáveis de estado.
devoluções | |
---|---|
Um tensor escalar ou um dicionário de tensores escalares. |
set_weights
set_weights (pesos)
Define os pesos da camada, de matrizes NumPy.
Os pesos de uma camada representam o estado da camada. Essa função define os valores de peso de matrizes numpy. Os valores de peso devem ser passados na ordem em que são criados pela camada. Observe que os pesos da camada devem ser instanciados antes de chamar esta função, chamando a camada.
Por exemplo, umDenso
layer retorna uma lista de dois valores: a kernelmatrix e o vetor bias. Estes podem ser usados para definir os pesos de outroDenso
camada:
layer_a = tf.keras.layers.Dense(1,
kernel_initializer=tf.constant_initializer(1.))
a_out = layer_a(tf.convert_to_tensor([[1., 2., 3.]]))
layer_a.get_weights()
[matriz([[1.],
[1.],
[1.]], dtype=float32), array([0.], dtype=float32)]
layer_b = tf.keras.layers.Dense(1,
kernel_initializer=tf.constant_initializer(2.))
b_out = layer_b(tf.convert_to_tensor([[10., 20., 30.]]))
layer_b.get_weights()
[matriz([[2.],
[2.],
[2.]], dtype=float32), array([0.], dtype=float32)]
layer_b.set_weights(layer_a.get_weights())
layer_b.get_weights()
[matriz([[1.],
[1.],
[1.]], dtype=float32), array([0.], dtype=float32)]
argumentos | |
---|---|
pesos | uma lista de matrizes NumPy. O número de arrays e sua forma devem corresponder ao número das dimensões dos pesos da camada (ou seja, deve corresponder à saída deget_weights ). |
Levanta | |
---|---|
ValueError | Se a lista de pesos fornecida não corresponder às especificações da camada. |
update_state
update_state(y_true, y_pred, sample_weight=None)
Atualizaçõesm
,nrow
,ncol
respectivamente, os histogramas conjuntos e marginais de (y_true
,y_pred
)
with_name_scope
@classmethod
with_name_scope (método)
Decorator para inserir automaticamente o escopo do nome do módulo.
class MeuMódulo(tf.Módulo):
@tf.Module.with_name_scope
def __call__(self, x):
se não hasattr(self, 'w'):
self.w = tf.Variable(tf.random.normal([x.shape[1], 3]))
return tf.matmul(x, self.w)
Usar o módulo acima produziriatf.Variávelareiatf.Tensors cujos nomes incluíam o nome do módulo:
mod = MeuMódulo()
mod(tf.ones([1, 2]))
mod.w
numpy=..., dtype=float32)>
argumentos | |
---|---|
método | O método para embrulhar. |
devoluções | |
---|---|
O método original agrupado de forma a entrar no escopo do nome do módulo. |
__chamar__
__call__( *args, **kwargs)
Acumula estatísticas e, em seguida, calcula o valor do resultado métrico.
argumentos | |
---|---|
*args | |
**quargs | Um mini-lote de entradas para a métrica, repassado paraatualizar_estado() . |
devoluções | |
---|---|
O tensor de valor métrico. |