Keras 模型中的 Softmax 采样

2024-04-30

我考虑过的一些方法:

继承自 Model 类在tensorflow keras中采样softmax https://stackoverflow.com/questions/52732145/sampled-softmax-in-tensorflow-keras

继承自Layer类如何在 Keras 模型中使用 TensorFlow 的采样 softmax 损失函数? https://stackoverflow.com/questions/47892380/how-can-i-use-tensorflows-sampled-softmax-loss-function-in-a-keras-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 我想我需要一些指针来指示我应该处理函数式 API 中 Model 类的哪些部分 - 知道我必须编写一个像上面这样的自定义损失函数。 我猜问题是访问 tf.nn.sampledsoftmax 函数中的权重


我能想到的最简单的方法是定义一个忽略输出层结果的损失。

完整的 Colab 在这里:https://colab.research.google.com/drive/1Rp3EUWnBE1eCcaisUju9TwSTswQfZOkS https://colab.research.google.com/drive/1Rp3EUWnBE1eCcaisUju9TwSTswQfZOkS

损失函数。请注意,它假设输出层是 Dense(activation='softmax') 并且忽略y_pred。因此,在使用损失的训练/评估期间,密集层的实际输出是 NOP。

进行预测时使用输出层。

class SampledSoftmaxLoss(object):
  """ The loss function implements the Dense layer matmul and activation
  when in training mode.
  """
  def __init__(self, model):
    self.model = model
    output_layer = model.layers[-1]
    self.input = output_layer.input
    self.weights = output_layer.weights

  def loss(self, y_true, y_pred, **kwargs):
    labels = tf.argmax(y_true, axis=1)
    labels = tf.expand_dims(labels, -1)
    loss = tf.nn.sampled_softmax_loss(
        weights=self.weights[0],
        biases=self.weights[1],
        labels=labels,
        inputs=self.input,
        num_sampled = 3,
        num_classes = 4,
        partition_strategy = "div",
    )
    return loss

Model:

def make_model():
  inp = Input(shape=(10,))
  h1 = Dense(16, activation='relu')(inp)
  h2 = Dense(4, activation='linear')(h1)
  # output layer and last hidden layer must have the same dims
  out = Dense(4, activation='softmax')(h2)
  model = Model(inp, out)
  loss_calculator = SampledSoftmaxLoss(model)
  model.compile('adam', loss_calculator.loss)
  return model

tf.set_random_seed(42)
model = make_model()
model.summary()

请注意,SampledSoftmaxLoss 强制最后一个模型层的输入必须具有与类数相同的维度。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Keras 模型中的 Softmax 采样 的相关文章

随机推荐

  • 生成唯一随机数的智能方法

    我想生成 00000001 到 99999999 范围内的唯一随机数序列 所以第一个可能是 00001010 第二个可能是 40002928 等等 最简单的方法是生成一个随机数并将其存储在数据库中 下次再执行一次并检查数据库中该数字是否已存
  • 使用概率选择数组值

    我还有一个作业要做 那就是 从黄色 蓝色和红色中随机选择一种颜色 概率为 黄色 3 7 蓝色 1 7 红色 3 7 我知道我可以通过使用类似的方法来解决这个问题 黄黄黄蓝红红红 但我认为这在编程上不是很好 因为当我碰巧发生这种情况时 我将不
  • C++ 模板类问题中的类型条件

    使用海湾合作委员会4 2 我有这个条件类型的元模板 template
  • Phong 着色问题

    我正在根据以下内容编写着色器冯模型 http en wikipedia org wiki Phong reflection model 我正在尝试实现这个方程 其中 n 是法线 l 是光线方向 v 是相机方向 r 是光反射 维基百科文章中更
  • facebook 发送 API 错误代码:100 API 错误描述:无效参数错误消息:“链接”无效

    我正在使用 facebook post GRAPH UI 来发布私人消息 并链接到我在 facebook 中的应用程序 早些时候它工作正常 但从最近两天开始 对话框开始抛出错误 发生错误 请稍后再试 API错误代码 100API错误描述 无
  • 为什么 typeof 函数在 C 中不起作用

    我使用GCC编译器 版本9 2 0 我想在 C 中使用 typeof 函数 但它会引发错误 错误 typeof 之前的预期表达式 如果您需要更多信息 请询问我 int a 5 double b the expected result is
  • Angular 2 材料垫片尺寸

    我有下面的代码
  • 如何使用 .NET 压缩目录?

    我有一个包含多个文件的目录 我想将此文件夹压缩为 zip 或 tar gz 文件 我怎样才能用 C 完成他的工作 您可以使用DotNetZip 库 http www codeplex com DotNetZip 它有相当丰富和有用的功能 E
  • 覆盖 Chrome 扩展页面 CSS

    我正在尝试使用 Chrome 扩展程序页面上的时尚扩展程序 但由于某种原因它不起作用 我试图用谷歌搜索这个 但我只得到关于使用扩展覆盖 CSS 的答案 而不是覆盖 Chrome 扩展页面 有什么想法为什么它不起作用吗 或者我怎样才能强迫它
  • 如何在 Spring WS 中配置双向 SSL 连接,而不使用 Spring boot 和使用单独的 Apache tomcat 服务器?

    我需要以双向 SSL 连接安全机制向服务器发送 Soap 请求消息 并处理来自服务器的 Soap 响应 我正在使用 Spring MVC 和 Spring ws 后者完全使用注释进行配置 并且需要配置两种方式 SSL 连接以将肥皂请求发送到
  • 如何给背景图片指定alt和标题?

    如何给背景图片指定alt和标题 是否可以 div div cont background FFF url images post png no repeat 您不能为 css 背景指定 alt 和标题 但可以为 div 指定标题 div t
  • 如何找到两个数组列之间的共同元素?

    我有两个以逗号分隔的字符串列 sourceAuthors and targetAuthors val df Seq Author1 Author2 Author3 Author2 Author3 Author1 toDF source ta
  • 为什么我们在 Javascript 中将秒乘以 1000 来添加时间

    我正在研究 cookie 我在 Stack Overflow 上发现了一些问题 这些问题已经得到解答 我在问题中看到答案将秒乘以 1000 我想知道 getTime 返回什么格式 这需要乘以 1000 让cookie在30秒后过期 http
  • Google Project 在开发者控制台中不可见

    我之前使用过一个 Google 项目来提供 GCM 服务 现在我需要在同一项目下启用firebase 但是当我进入帐户更新配置时 它没有显示我之前使用的 Android 应用程序 我使用了 2 到 3 个应用程序 现在这些应用程序没有出现在
  • 如何通过正则表达式防止感叹号

    public static final String REGEX ADDRESS ZIP 0 9 上面用于验证邮政编码的正则表达式似乎允许感叹号 即使我在这里不允许 不确定错误是什么 我需要更改正则表达式模式吗 连字符 里面是一个元字符字符
  • Java 客户端与具有相互证书的 WCF 服务互操作 - 无法解析用于验证签名的 KeyInfo

    例外 MessageSecurityException 无法解析用于验证签名的 KeyInfo KeyInfo SecurityKeyIdentifier 我必须设置一个 WCF 服务来接收来自 Java 客户端的 SOAP 调用 该客户端
  • iPad 上的 HTML5 视频搜索

    我有一个带有自定义搜索栏的 HTML5 视频播放器 它在 iPhone 内联播放 和浏览器上运行得很好 它在 iPad 上也播放得很好 并且搜索栏会随着电影播放而更新 但由于某种原因 我无法搜索 所有值都是正确的 我正在尝试设置 myPla
  • 降低 Task.Factory.StartNew 线程的优先级

    像下面这样的代码将启动一个新线程来完成这项工作 有什么方法可以控制该线程的优先级吗 Task Factory StartNew gt everything here will be executed in a new thread I wa
  • 使用nodejs的Forever将console.logs输出到屏幕

    我刚刚发现我的nodejs应用程序不断崩溃 所以我使用了forever app js启动我的应用程序并在崩溃时自动重新启动 Problem 现在我的应用程序在运行时输出很多有用的信息console log and util log 我以前用
  • Keras 模型中的 Softmax 采样

    我考虑过的一些方法 继承自 Model 类在tensorflow keras中采样softmax https stackoverflow com questions 52732145 sampled softmax in tensorflo