nnlm代码解读链接

24 篇文章 0 订阅
23 篇文章 0 订阅
http://blog.csdn.net/a635661820/article/details/44730507
下面是一个使用NNLM模型训练词向量的基本代码: ``` import tensorflow as tf # 训练文本数据 corpus = [['I', 'love', 'chocolate', '.'], ['I', 'hate', 'spinach', '.'], ['I', 'like', 'ice', 'cream', '.']] # 获取所有单词,并用整数编码 vocab = set(word for sentence in corpus for word in sentence) word2idx = {word: idx for idx, word in enumerate(vocab)} idx2word = {idx: word for idx, word in enumerate(vocab)} # 构建NNLM模型 VOCAB_SIZE = len(vocab) EMBED_SIZE = 50 HIDDEN_SIZE = 100 WINDOW_SIZE = 2 BATCH_SIZE = 32 NUM_SAMPLED = 64 LEARNING_RATE = 0.01 inputs = tf.keras.layers.Input(shape=(WINDOW_SIZE * 2,)) embeddings = tf.keras.layers.Embedding(VOCAB_SIZE, EMBED_SIZE)(inputs) reshape = tf.keras.layers.Reshape((EMBED_SIZE * WINDOW_SIZE * 2,))(embeddings) hidden = tf.keras.layers.Dense(HIDDEN_SIZE, activation='relu')(reshape) output = tf.keras.layers.Dense(VOCAB_SIZE)(hidden) model = tf.keras.models.Model(inputs=inputs, outputs=output) # 编译模型 model.compile(loss=tf.keras.losses.CategoricalCrossentropy(from_logits=True), optimizer=tf.keras.optimizers.Adam(LEARNING_RATE)) # 准备训练数据 train_data = [] labels = [] for sentence in corpus: for i, word in enumerate(sentence): for j in range(i - WINDOW_SIZE, i + WINDOW_SIZE + 1): if j < 0 or j >= len(sentence) or i == j: continue train_data.append([word2idx[word], word2idx[sentence[j]]]) labels.append(word2idx[sentence[i]]) train_data = tf.data.Dataset.from_tensor_slices((train_data, labels)).batch(BATCH_SIZE).repeat() # 训练模型 model.fit(train_data, epochs=1000, steps_per_epoch=len(train_data)) # 获取词向量 embeddings = model.get_layer('embedding').get_weights()[0] ``` 在此代码中,我们使用了tensorflow.keras框架来构建和训练NNLM模型。我们首先获取所有单词并用整数编码,然后定义模型的超参数(例如嵌入大小、隐藏层大小、窗口大小等)和优化器,以及将文本数据转换为模型输入格式的准备。我们然后使用训练数据来拟合模型,并最终获得单词的嵌入向量。请注意,该代码只是一个基本框架,可以根据具体需求进行修改。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值