当前位置: 首页 > 知识库问答 >
问题:

deeplearning4j嵌入层权重更新

刁越
2023-03-14

我需要使用嵌入层来编码单词向量,所以嵌入层的权重本质上是单词向量。显然,我不希望这种情况下的权重在反向传播期间被更新。我的问题是,如果按设计嵌入层已经禁止重量更新,或者我必须对此做一些特别的事情?

共有1个答案

虞博涛
2023-03-14

在这里看一个老问题,

https://github.com/deeplearning4j/deeplearning4j/issues/3118

我认为满足我需要的一个方法是将学习速率和偏差设置为0,即.biasinit(0.0).learningrate(0.0),尽管我认为更好的方法是使用冻结层来环绕它,这也是从上面的链接中建议的?

new FrozenLayer.Builder().layer(new EmbeddingLayer.Builder().nIn(nIn).nOut(nOut).activate(Activate.IDENTITY).biasInit(0.0).build()).build()
 类似资料:
  • Embedding层 Embedding层只能作为模型的第一层。 较为费劲的就是第一句话: 嵌入层将正整数(下标)转换为具有固定大小的向量,如[[4],[20]]->[[0.25,0.1],[0.6,-0.2]] 哪到底咋转啊,亲? 这涉及到词向量,具体看可以参考Word2vec 上图的流程是把文章的单词使用词向量来表示。 (1)提取文章所有的单词,把其按其出现的次数降许(这里只取前50000个)

  • Embedding层 keras.layers.embeddings.Embedding(input_dim, output_dim, init='uniform', input_length=None, W_regularizer=None, activity_regularizer=None, W_constraint=None, mask_zero=False, weights=None,

  • Embedding层 keras.layers.embeddings.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=Fals

  • 问题内容: 我想重置(随机化)我的Keras(深度学习)模型中所有层的权重。原因是我希望能够使用不同的数据拆分多次训练模型,而不必每次都进行(缓慢的)模型重新编译。 受此讨论的启发,我正在尝试以下代码: 但是,它仅部分起作用。 部分是因为我检查了一些layer.get_weights()值,但它们似乎有所变化。但是,当我重新开始训练时,成本值比第一次运行时的初始成本值低得多。几乎就像我已经成功重置

  • [source] Embedding keras.layers.Embedding(input_dim, output_dim, embeddings_initializer='uniform', embeddings_regularizer=None, activity_regularizer=None, embeddings_constraint=None, mask_zero=False,

  • 我使用deeplearning4j对我的数据的第一部分训练了一个模型并保存了它。 现在,我想在下一部分数据上训练这个保存的模型。