Как использовать tenorflow nce_loss в керасе? - PullRequest
0 голосов
/ 13 мая 2018

Я пытаюсь сделать большую мультиклассовую классификацию (на самом деле перевод).

Я пытаюсь использовать tenorflow nce_loss в керасе, но не могу заставить его работать. Любая помощь здесь?

Я не уверен, как я могу передать веса, num_class и смещение из предыдущего слоя в nce_loss.

Я получаю следующую ошибку:

import tensorflow as tf
from attention_decoder import AttentionDecoder
from keras.layers import Dropout,Masking,Embedding
def keras_nce_loss(tgt, pred):
    return tf.nn.nce_loss(labels=tgt,inputs=pred,num_sampled=100)



  model2 = Sequential()
  model2.add(Embedding(input_features, input_embed_dimension, input_length=n_timesteps_in,mask_zero=True))
  model2.add(Dropout(0.2))
  model2.add(LSTM(LSTM_Unitsize,return_sequences=True,activation='relu'))
  model2.add(Masking(mask_value=0.))
  model2.add(AttentionDecoder(LSTM_Unitsize, n_features))
  model2.compile(loss=keras_nce_loss, optimizer='adam', metrics=['acc'])

    ---------------------------------------------------------------------------
TypeError                                 Traceback (most recent call last)
<ipython-input-157-0d76d4053a42> in <module>()
     11   model2.add(Masking(mask_value=0.))
     12   model2.add(AttentionDecoder(LSTM_Unitsize, n_features))
---> 13   model2.compile(loss=keras_nce_loss, optimizer='adam', metrics=['acc'])
     14   #model2.save("model2_compiled.hd5")

/usr/local/lib/python3.6/dist-packages/keras/models.py in compile(self, optimizer, loss, metrics, sample_weight_mode, **kwargs)
    786                            metrics=metrics,
    787                            sample_weight_mode=sample_weight_mode,
--> 788                            **kwargs)
    789         self.optimizer = self.model.optimizer
    790         self.loss = self.model.loss

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in compile(self, optimizer, loss, metrics, loss_weights, sample_weight_mode, **kwargs)
    909             loss_weight = loss_weights_list[i]
    910             output_loss = weighted_loss(y_true, y_pred,
--> 911                                         sample_weight, mask)
    912             if len(self.outputs) > 1:
    913                 self.metrics_tensors.append(output_loss)

/usr/local/lib/python3.6/dist-packages/keras/engine/training.py in weighted(y_true, y_pred, weights, mask)
    434         """
    435         # score_array has ndim >= 2
--> 436         score_array = fn(y_true, y_pred)
    437         if mask is not None:
    438             # Cast the mask to floatX to avoid float64 upcasting in theano

<ipython-input-155-ec20de882530> in keras_nce_loss(tgt, pred)
      2 
      3 def keras_nce_loss(tgt, pred):
----> 4     return tf.nn.nce_loss(labels=tgt,inputs=pred,num_sampled=100)

TypeError: nce_loss() missing 3 required positional arguments: 'weights', 'biases', and 'num_classes'
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...