成功解决python\ops\seq2seq.py TypeError: ms_error() got an unexpected keyword argument 'labels'
目录
错误地址:contrib\legacy_seq2seq\python\ops\seq2seq.py", line 1098, in sequence_loss_by_example
TypeError: ms_error() got an unexpected keyword argument 'labels'
查看函数使用方法
- def sequence_loss_by_example(logits,
- targets,
- weights,
- average_across_timesteps=True,
- softmax_loss_function=None,
- name=None):
- """Weighted cross-entropy loss for a sequence of logits (per example).
- Args:
- logits: List of 2D Tensors of shape [batch_size x num_decoder_symbols].
- targets: List of 1D batch-sized int32 Tensors of the same length as logits.
- weights: List of 1D batch-sized float-Tensors of the same length as logits.
- average_across_timesteps: If set, divide the returned cost by the total
- label weight.
- softmax_loss_function: Function (labels, logits) -> loss-batch
- to be used instead of the standard softmax (the default if this is None).
- **Note that to avoid confusion, it is required for the function to accept
- named arguments.**
- name: Optional name for this operation, default: "sequence_loss_by_example".
- Returns:
- 1D batch-sized float Tensor: The log-perplexity for each sequence.
- Raises:
- ValueError: If len(logits) is different from len(targets) or len(weights).
- """
- if len(targets) != len(logits) or len(weights) != len(logits):
- raise ValueError("Lengths of logits, weights, and targets must be the same "
- "%d, %d, %d." % (len(logits), len(weights), len(targets)))
- with ops.name_scope(name, "sequence_loss_by_example",
- logits + targets + weights):
- log_perp_list = []
- for logit, target, weight in zip(logits, targets, weights):
- if softmax_loss_function is None:
- TODO(irving,ebrevdo): This reshape is needed because
- sequence_loss_by_example is called with scalars sometimes, which
- violates our general scalar strictness policy.
- target = array_ops.reshape(target, [-1])
- crossent = nn_ops.sparse_softmax_cross_entropy_with_logits(
- labels=target, logits=logit)
- else:
- crossent = softmax_loss_function(targets, logits=logit) 190318修改 targets
- log_perp_list.append(crossent * weight)
- log_perps = math_ops.add_n(log_perp_list)
- if average_across_timesteps:
- total_size = math_ops.add_n(weights)
- total_size += 1e-12 Just to avoid division by 0 for all-0 weights.
- log_perps /= total_size
- return log_perps
crossent = softmax_loss_function(labels=targets, logits=logit)
修改为
crossent = softmax_loss_function(targets, logits)
大功告成!哈哈!
网站声明:如果转载,请联系本站管理员。否则一切后果自行承担。
加入交流群
请使用微信扫一扫!