特征列预训练嵌入

如何在中使用预训练的嵌入tf.feature_column.embedding_column。


我曾经使用pre_trained嵌入tf.feature_column.embedding_column。但这是行不通的。错误是


错误是:


ValueError:初始化程序必须是可调用的(如果已指定)。嵌入column_name:itemx


这是我的代码:


weight, vocab_size, emb_size = _create_pretrained_emb_from_txt(FLAGS.vocab, 

FLAGS.pre_emb)


W = tf.Variable(tf.constant(0.0, shape=[vocab_size, emb_size]),

                trainable=False, name="W")

embedding_placeholder = tf.placeholder(tf.float32, [vocab_size, emb_size])

embedding_init = W.assign(embedding_placeholder)


sess = tf.Session()

sess.run(embedding_init, feed_dict={embedding_placeholder: weight})


itemx_vocab = tf.feature_column.categorical_column_with_vocabulary_file(

    key='itemx',

    vocabulary_file=FLAGS.vocabx)


itemx_emb = tf.feature_column.embedding_column(itemx_vocab,

                                               dimension=emb_size,

                                               initializer=W,

                                               trainable=False)

我尝试过初始化= lambda w:W。像这样:


itemx_emb = tf.feature_column.embedding_column(itemx_vocab,

                                               dimension=emb_size,

                                               initializer=lambda w:W,

                                               trainable=False)

它报告错误:


TypeError:()获得了意外的关键字参数'dtype'


拉丁的传说
浏览 172回答 2
2回答

侃侃无极

您也可以将数组包装成如下函数:some_matrix = np.array([[0,1,2],[0,2,3],[5,6,7]])def custom_init(shape, dtype):    return some_matrixembedding_feature = tf.feature_column.embedding_column(itemx_vocab,                                                        dimension=3,                                                        initializer=custom_init                                                       )这是一种骇人听闻的方法,但却能胜任。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Python