python - 如何更改 andrej carpathys char rnn 以使用非文本数据类型
问题描述
我试图改变 andrej karpathys char rnn 以使用 256 维 8 或 16 位向量而不是文本。
我阅读了代码,但我不明白它在做什么。
代码可以在这里找到https://github.com/karpathy/char-rnn 我相信这个文件https://github.com/karpathy/char-rnn/blob/master/util/CharSplitLMMinibatchLoader.lua 就是这样需要修改,具体是这部分
function CharSplitLMMinibatchLoader.text_to_tensor(in_textfile, out_vocabfile, out_tensorfile)
local timer = torch.Timer()
print('loading text file...')
local cache_len = 10000
local rawdata
local tot_len = 0
local f = assert(io.open(in_textfile, "r"))
-- create vocabulary if it doesn't exist yet
print('creating vocabulary mapping...')
-- record all characters to a set
local unordered = {}
rawdata = f:read(cache_len)
repeat
for char in rawdata:gmatch'.' do
if not unordered[char] then unordered[char] = true end
end
tot_len = tot_len + #rawdata
rawdata = f:read(cache_len)
until not rawdata
f:close()
-- sort into a table (i.e. keys become 1..N)
local ordered = {}
for char in pairs(unordered) do ordered[#ordered + 1] = char end
table.sort(ordered)
-- invert `ordered` to create the char->int mapping
local vocab_mapping = {}
for i, char in ipairs(ordered) do
vocab_mapping[char] = i
end
-- construct a tensor with all the data
print('putting data into tensor...')
local data = torch.ByteTensor(tot_len) -- store it into 1D first, then rearrange
f = assert(io.open(in_textfile, "r"))
local currlen = 0
rawdata = f:read(cache_len)
repeat
for i=1, #rawdata do
data[currlen+i] = vocab_mapping[rawdata:sub(i, i)] -- lua has no string indexing using []
end
currlen = currlen + #rawdata
rawdata = f:read(cache_len)
until not rawdata
f:close()
-- save output preprocessed files
print('saving ' .. out_vocabfile)
torch.save(out_vocabfile, vocab_mapping)
print('saving ' .. out_tensorfile)
torch.save(out_tensorfile, data)
end
我不知道 python、torch 或 lua,所以我有点迷路了。
解决方案
推荐阅读
- css - 使用 Emotion 库选择时如何更改文本颜色
- vulkan - 在运行时添加新 3D 对象的最佳方式
- sql - Hive ODBC 驱动程序无法识别 unix_timestamp
- watchkit - Apple Watch 复杂功能无法可靠更新
- javascript - .then 和 .catch 都在同一个代码块中执行
- javascript - 弹出窗口和 aria-live 的可访问性问题
- ssas - MDX 查询更改列标题
- javascript - 计算来自选定父级的 AJAX 调用中返回的结果
- azure - 为 Azure DevOps 配置自托管 ARM 代理时出错
- perl - Perl:cpan PDL 安装问题