Julia - python pickle - cifar-10 数据
Julia - python pickle - cifar-10 data
无法取消 python julia 中的 pickle 对象
类型错误("a bytes-like object is required, not 'str'")
#download("http://www.cs.utoronto.ca/~kriz/cifar-10-python.tar.gz","imgs_dataset.tar.gz")
#cmd = `tar xvzf imgs_dataset.tar.gz`
#run(cmd)
using PyCall
using StatsBase
@pyimport pickle
mainDir="./cifar-10-batches-py/"
function read_data(mainDir)
dict=[]
open(mainDir*"data_batch_1","r") do f
dict = pickle.load(f)
end
return dict
end
dict = read_data(mainDir)
imgs = dict["data"];
classes = dict["labels"];
X=float.(imgs)';
Y=onehotbatch(classes,0:9);
我评论了前 3 行,因为我之前有 运行 它们,我的互联网连接需要大约 2 小时才能下载 CIFAR-10
我收到以下错误:
PyError ($(Expr(:escape, :(ccall(#=
/home/remon/.julia/packages/PyCall/0jMpb/src/pyfncall.jl:44 =#
@pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr,
kw))))) TypeError("a bytes-like object is
required, not 'str'",)
注:
- 我正在使用 Jupyter 笔记本
- 我正在使用 Julia 1.0.1 我的系统上安装了 python 2.7.15rc1 和 3.6.5。
- 我正在使用 Ubuntu 18.04
那么问题是什么?
这是一个 Julia 会话示例,可以满足您的所有需求:
julia> using PyCall
julia> @pyimport pickle
julia> x = [1,2,3];
julia> f = pybuiltin("open")("file.pickle","wb")
PyObject <_io.BufferedWriter name='file.pickle'>
julia> p = pickle.Pickler(f)
PyObject <_pickle.Pickler object at 0x000000003DDABC28>
julia> p[:dump](x)
julia> f[:close]()
julia> f = pybuiltin("open")("file.pickle","rb")
PyObject <_io.BufferedReader name='file.pickle'>
julia> p = pickle.Unpickler(f)
PyObject <_pickle.Unpickler object at 0x000000003DE1C5C0>
julia> y=p[:load]()
3-element Array{Int64,1}:
1
2
3
julia> f[:close]()
无法取消 python julia 中的 pickle 对象
类型错误("a bytes-like object is required, not 'str'")
#download("http://www.cs.utoronto.ca/~kriz/cifar-10-python.tar.gz","imgs_dataset.tar.gz")
#cmd = `tar xvzf imgs_dataset.tar.gz`
#run(cmd)
using PyCall
using StatsBase
@pyimport pickle
mainDir="./cifar-10-batches-py/"
function read_data(mainDir)
dict=[]
open(mainDir*"data_batch_1","r") do f
dict = pickle.load(f)
end
return dict
end
dict = read_data(mainDir)
imgs = dict["data"];
classes = dict["labels"];
X=float.(imgs)';
Y=onehotbatch(classes,0:9);
我评论了前 3 行,因为我之前有 运行 它们,我的互联网连接需要大约 2 小时才能下载 CIFAR-10
我收到以下错误:
PyError ($(Expr(:escape, :(ccall(#= /home/remon/.julia/packages/PyCall/0jMpb/src/pyfncall.jl:44 =# @pysym(:PyObject_Call), PyPtr, (PyPtr, PyPtr, PyPtr), o, pyargsptr, kw))))) TypeError("a bytes-like object is required, not 'str'",)
注:
- 我正在使用 Jupyter 笔记本
- 我正在使用 Julia 1.0.1 我的系统上安装了 python 2.7.15rc1 和 3.6.5。
- 我正在使用 Ubuntu 18.04
那么问题是什么?
这是一个 Julia 会话示例,可以满足您的所有需求:
julia> using PyCall
julia> @pyimport pickle
julia> x = [1,2,3];
julia> f = pybuiltin("open")("file.pickle","wb")
PyObject <_io.BufferedWriter name='file.pickle'>
julia> p = pickle.Pickler(f)
PyObject <_pickle.Pickler object at 0x000000003DDABC28>
julia> p[:dump](x)
julia> f[:close]()
julia> f = pybuiltin("open")("file.pickle","rb")
PyObject <_io.BufferedReader name='file.pickle'>
julia> p = pickle.Unpickler(f)
PyObject <_pickle.Unpickler object at 0x000000003DE1C5C0>
julia> y=p[:load]()
3-element Array{Int64,1}:
1
2
3
julia> f[:close]()