我有以下代码:
a = torch.randint(0,10,[3,3,3,3])
b = torch.LongTensor([1,1,1,1])
Run Code Online (Sandbox Code Playgroud)
我有一个多维索引,b
并希望用它来选择一个单元格a
.如果b不是张量,我可以这样做:
a[1,1,1,1]
Run Code Online (Sandbox Code Playgroud)
哪个返回正确的单元格,但是:
a[b]
Run Code Online (Sandbox Code Playgroud)
不起作用,因为它只选择了a[1]
四次.
我怎样才能做到这一点?谢谢
我想将单词丢失添加到我的网络中,以便我可以有足够的训练示例来训练“unk”标记的嵌入。据我所知,这是标准做法。假设 unk token 的索引为 0,padding 的索引为 1(如果更方便的话,我们可以切换它们)。
这是一个简单的 CNN 网络,它以我期望的方式实现单词丢失:
class Classifier(nn.Module):
def __init__(self, params):
super(Classifier, self).__init__()
self.params = params
self.word_dropout = nn.Dropout(params["word_dropout"])
self.pad = torch.nn.ConstantPad1d(max(params["window_sizes"])-1, 1)
self.embedding = nn.Embedding(params["vocab_size"], params["word_dim"], padding_idx=1)
self.convs = nn.ModuleList([nn.Conv1d(1, params["feature_num"], params["word_dim"] * window_size, stride=params["word_dim"], bias=False) for window_size in params["window_sizes"]])
self.dropout = nn.Dropout(params["dropout"])
self.fc = nn.Linear(params["feature_num"] * len(params["window_sizes"]), params["num_classes"])
def forward(self, x, l):
x = self.word_dropout(x)
x = self.pad(x)
embedded_x = self.embedding(x)
embedded_x = embedded_x.view(-1, 1, x.size()[1] * self.params["word_dim"]) # [batch_size, 1, seq_len * word_dim] …
Run Code Online (Sandbox Code Playgroud) 这是我的代码:
var mongoose = require('mongoose');
var db = mongoose.createConnection('localhost', 'mcfly');
db.once('open', function() {
var schema = new mongoose.Schema({
firstname: String,
lastname: String
});
var col = db.model('mathpeep', schema);
col.find({firstname: 'hey'}, function(err, Col) {
console.log(Col);
});
})
Run Code Online (Sandbox Code Playgroud)
我的 mongod 运行正常,我运行了“mango”并在集合“mathpeep”中的数据库“mcfly”中输入了几个条目。这段代码基本上是从它工作的另一个地方复制的,一直到变量名,所以我不知道出了什么问题。
问题是我的数据库看起来像这样:
> use mcfly
switched to db mcfly
> db.createCollection('mathpeep')
{ "ok" : 1 }
> show collections
mathpeep
system.indexes
> db.mathpeep.insert({firstname: 'hey', lastname: 'ayy'})
WriteResult({ "nInserted" : 1 })
> db.mathpeep.insert({firstname: 'aaa', lastname: 'aaaaa'})
WriteResult({ "nInserted" : 1 })
> …
Run Code Online (Sandbox Code Playgroud) 以下网络代码应该是您经典的简单 LSTM 语言模型,一段时间后开始输出 nan loss……在我的训练集上需要几个小时,而且我无法在较小的数据集上轻松复制它。但它总是发生在认真的训练中。
Sparse_softmax_with_cross_entropy 在数值上应该是稳定的,所以它不可能是原因......但除此之外,我没有看到任何其他节点可能会导致图中出现问题。可能是什么问题呢?
class MyLM():
def __init__(self, batch_size, embedding_size, hidden_size, vocab_size):
self.x = tf.placeholder(tf.int32, [batch_size, None]) # [batch_size, seq-len]
self.lengths = tf.placeholder(tf.int32, [batch_size]) # [batch_size]
# remove padding. [batch_size * seq_len] -> [batch_size * sum(lengths)]
mask = tf.sequence_mask(self.lengths) # [batch_size, seq_len]
mask = tf.cast(mask, tf.int32) # [batch_size, seq_len]
mask = tf.reshape(mask, [-1]) # [batch_size * seq_len]
# remove padding + last token. [batch_size * seq_len] -> [batch_size * sum(lengths-1)]
mask_m1 = tf.cast(tf.sequence_mask(self.lengths - 1, maxlen=tf.reduce_max(self.lengths)), tf.int32) …
Run Code Online (Sandbox Code Playgroud)