
mxnet
xiaotao_1
这个作者很懒,什么都没留下…
展开
-
mxnet保存模型,以及用模型来预测新数据。
我们希望训练好之后的模型,可以保存下来,然后需要预测新数据的时候,就可以拿来用,可以这样做。 我们以线性回归的例子来讲: 1,训练并保存模型。import mxnet as mximport numpy as npimport logginglogging.getLogger().setLevel(logging.DEBUG)# Training datatrain_data =原创 2017-12-14 10:11:12 · 7123 阅读 · 0 评论 -
学习mxnet的高级接口gluon的一些资源。
1,官方文档 2,官方文档中文版,翻译得相当不错。 3,中文论坛 4,李沐大神的课程,强烈推荐认真看一遍。 5,待补充。原创 2018-03-20 09:34:59 · 715 阅读 · 0 评论 -
mxnet.ndarray进行矩阵拼接,使用concat命令。
>>> import mxnet.ndarray as nd>>> x = [[1,1],[2,2]]>>> y = [[3,3],[4,4],[5,5]]>>> z = [[6,6], [7,7],[8,8]]>>> nd.concat(x,y,z,dim=0) # 按照一维拼接,相当原创 2018-03-23 18:50:05 · 6648 阅读 · 0 评论 -
mxnet gluon解决报错:UserWarning: Gradient of Parameter `net0_dense0_weight` in context gpu(0)
完整报错如下:UserWarning: Gradient of Parameter bisruaudio0_dense0_weight on context gpu(0) has not been updated by backward since last step. This could mean a bug in your model that maked it only use a...原创 2018-03-23 19:08:22 · 1470 阅读 · 0 评论 -
解析mxnet.ndarray.reshape的用法,和numpy.reshape很像
1,常规用法。>>> import mxnet.ndarray as nd>>> a = nd.reshape(nd.arange(12), shape=(3, 4)) # shape=(3,4)可直接写(3,4),不过我喜欢把实参名标上。>>> a[[ 0. 1. 2. 3.] [ 4. 5. 6. ...原创 2018-03-20 20:12:29 · 2991 阅读 · 0 评论 -
利用shuffle参数进行相邻批量采样和随机批量采样。
shuffle中文意思是洗牌,在各大机器学习框架中都有他的身影。这里主要讲在mxnet利用shuffle参数进行相邻批量采样和随机批量采样。 相邻批量采样:一般用在对数据顺序比较依赖的情况,如RNN等网络。 随机批量采样:用在对顺序无所谓的情况下,能够加快训练速度,如CNN,DNN等网络。 1,shuffle=False,表示不洗牌,即进行相邻批量采样,一般都是默...原创 2018-03-21 11:17:16 · 1689 阅读 · 0 评论 -
mxnet.gluon.rnn.RNN自带激活层,默认为‘relu’
官方文档如下:activation='relu'可见默认的激活层为reluclass mxnet.gluon.rnn.RNN(hidden_size, num_layers=1, activation='relu', layout='TNC', dropout=0, bidirectional=False, i2h_weight_initializer=None, h2h_weight_ini...原创 2018-03-26 16:45:03 · 1132 阅读 · 0 评论 -
用gpu跑gluon,以及解决It was only initialized on [cpu(0)].
1, 数据要设置在gpu上存储,如:a = nd.array([1,2,3], ctx=mx.gpu()) 2,不只是第一次权重初始化的时候需要设置ctx,在后来每次调用intialize()函数的时候也要设置ctx,具体设置如下:net.collect_params().initialize(force_reinit=True, ctx=mx.gpu()) 3,i...原创 2018-04-10 00:14:55 · 2920 阅读 · 0 评论 -
详解mxnet.random.seed。即随机数生成种子。
1,如果我们不设置这个参数,同样的产生随机数的命令,两次运行结果不一样。例如:import mxnet as mx>>> print(mx.nd.random.normal(shape=(2,2)).asnumpy())[[ 1.36481571 -0.62203991] [-1.4962182 -0.08511394]]>>> print...原创 2018-04-02 21:01:54 · 3045 阅读 · 0 评论 -
详解mxnet.ndarray.one_hot。即转变为one_hot向量的命令。
它有这些参数。mxnet.ndarray.one_hot(indices=None, depth=_Null, on_value=_Null, off_value=_Null, dtype=_Null, out=None, name=None, **kwargs) 解释一下重要的参数:indices (NDArray) : 要转化为one—hot的数据。depth (int, ...原创 2018-04-02 21:18:06 · 2090 阅读 · 0 评论 -
mxnet中的copyto和as_in_context辨析
1,二者都是用来在设备间传递数据的,比如gpu上的数据传到cpu上。 2,主要区别是,如果源和目标的context一致,as_in_context不复制,而copyto总是会新建内存。>>> import mxnet as mx>>> import mxnet.ndarray as nd>>> y = nd.array([1, 2, ...原创 2018-04-16 12:55:35 · 3328 阅读 · 0 评论 -
访问mxnet的gluon模型参数报错KeyError: 'shape'
代码如下:from mxnet.gluon import nnfrom mxnet import nddef get_net(): net = nn.Sequential() with net.name_scope(): net.add(nn.Dense(4, activation="relu")) net.add(nn.Dens...原创 2018-04-03 20:10:40 · 1570 阅读 · 0 评论 -
解决mxnet报错:“ZeroDivisionError: float division by zero”
在运行mxnet的线性回归例子时,出现报错:ZeroDivisionError: float division by zero 解决: 把model.fit(train_iter, eval_iter, optimizer_params={'learning_rate':0.005, 'momentum': 0.9}, num...原创 2018-03-13 19:39:33 · 10127 阅读 · 0 评论 -
查看mxnet中的symbol图的所有变量,以及他们的shape
>>> import mxnet as mx>>> >>> a = mx.sym.Variable('data')>>> b = mx.sym.FullyConnected(data=a,name='fc1',num_hidden=100)>>> data_shape = {'data':(2原创 2018-03-13 19:26:21 · 6392 阅读 · 0 评论 -
mxnet设置动态学习率(learning rate)
如果learning rate很大,算法会在局部最优点附近来回跳动,不会收敛; 如果learning rate太小,算法每步的移动距离很短,就会导致算法收敛速度很慢。 所以我们可以先设置一个比较大的学习率,随着迭代次数的增加慢慢降低它。mxnet中有现成的类class,我们可以直接引用。 这里有三种mxnet.lr_scheduler。 第一种是:mxnet.lr_sched原创 2017-12-22 16:09:07 · 5095 阅读 · 0 评论 -
mxnet中,SGD(随机梯度下降)的参数momentum的用处
momentum是mxnet包中SGD(随机梯度下降)优化器的一个参数。它是用来更新SGD优化器权值的。具体如下:rescaled_grad = lr * rescale_grad * clip(grad, clip_gradient) + wd * weightstate = momentum * state + rescaled_gradweight = weight - state 参考原创 2017-12-22 16:47:15 · 3186 阅读 · 0 评论 -
mxnet运行时报错:AttributeError: module 'mxnet.ndarray' has no attribute 'random'
这是因为我的mxnet版本过低导致的。解决办法有两个,一个是升级版本,一个是把random去掉,如:mx.nd.random.uniform(0, 1) 改为 mx.nd.uniform(0, 1)原创 2017-12-11 15:03:44 · 3235 阅读 · 0 评论 -
mxnet利用下载好的mnist数据训练cnn
这次我们先把mnist数据集从http://yann.lecun.com/exdb/mnist/下载好了,然后利用mx.io.MNISTIter来包装数据,进而用来训练cnn。 代码如下:import mxnet as mximport osimport logginglogging.getLogger().setLevel(logging.DEBUG)# Training data# l原创 2017-12-15 10:52:20 · 1751 阅读 · 0 评论 -
mxnet解决AttributeError: module 'mxnet.test_utils' has no attribute 'get_mnist'这个报错
出现 AttributeError: module 'mxnet.test_utils' has no attribute 'get_mnist' 这个报错,主要是因为mxnet版本过低,有两个解决办法。 1,升级mxnet版本。2,不升级版本,利用mxnet.io.MNISTIter来加载数据。步骤如下: (1),先去http://yann.lecun.com/exdb/mni原创 2017-12-15 10:26:14 · 2788 阅读 · 0 评论 -
mxnet的Predict with pre-trained models教程,以及一些常见的问题
问题1:要下载的模型比较大,可以手动去http://data.mxnet.io/models/imagenet-11k/下载,然后把resnet-152-0000.params; resnet-152-symbol.json; synset.txt放到该.py文件所在的文件夹。 问题2:import cv2 .但是有的人没有装这个,参考http://blog.youkuaiyun.com/xiaotao_原创 2017-12-18 19:25:31 · 1682 阅读 · 0 评论 -
mxnet解决报错 AddPad(dshape[2], param_.pad[0]) (5 vs. 3) kernel size exceed input
出现这样的报错,是说卷积核的大小超过了输入数据的大小。比如我输入数据为(100,1,10,10),经过第一层卷积层(卷积核大小为(5,5))后,数据变成(100,1,6,6)。然后经过第一次Pooling层,数据变成(100,1,3,3)。如果此时再经过第二卷积层(卷积核大小还是(5,5)),就会报错。解决办法:把卷积核改小一点,或者只要一层卷积,或者把数据规模整大。...原创 2018-03-16 15:50:00 · 1819 阅读 · 0 评论 -
AssertionError: HybridBlock requires the first argument to forward be either Symbol or NDArray, but
mxnet中的HybridBlock只接受Symbol和NDArray数据,如果你送入的是numpy.ndarray或者list数据,就会报如上的错误。解决办法:把数据变为NDArray就行了。>>> import mxnet as mx>>> import numpy as np>>> data = np.arange(5)&g...原创 2018-03-16 16:02:40 · 2258 阅读 · 0 评论 -
NDArray 与 numpy.ndarray 互相转换
import numpy as npfrom mxnet import nd# numpy.ndarray 变 mx.NDArraynp_val = np.array([1, 2, 3])nd_val = nd.array(np_val) # 深复制# NDArray 变 numpy.ndarraynp_val_ = nd_val.asnumpy()原创 2018-03-17 19:19:09 · 10992 阅读 · 0 评论 -
解决mxnet报错:Embedding layer doesn't support calculate data gradient
word_embed = mx.sym.Embedding(data=seq, input_dim=vocab_size, output_dim=num_embed, name='seq_embed') 改为:word_embed = mx.sym.Embedding(data=mx.sym.BlockGrad(seq), input_dim=vocab_size, output_d...原创 2018-03-12 19:26:09 · 602 阅读 · 1 评论 -
解决mxnet报错:KeyError: 'softmax_label' 迭代器默认的label_name='softmax_label'。
mxnet.io.NDArrayIter(data, label=None, batch_size=1, shuffle=False, last_batch_handle='pad', data_name='data', label_name='softmax_label') 看这里,我们了解到,mxnet.io.NDArrayIter的label_name参数默认是softmax_labe...原创 2018-03-12 20:22:33 · 2368 阅读 · 1 评论 -
gluon网络可视化
1,利用print(net)。就能看到net网络具体每层的参数。 2,利用mx.viz.plot_network(net).view()。这个能具体出pdf图像,不过要先转成sym编程才行。如何转见这里 举个栗子:import mxnet as mxfrom mxnet.gluon import nnclass Net(nn.HybridBlock): ...原创 2018-04-11 11:29:14 · 1596 阅读 · 0 评论