深度学习-卷积神经网络和用python提取特征

卷积神经网络(或共产党员)是MLP的生物学灵感变体,它们有不同类型的层,每个不同的层的工作方式不同于通常的MLP层。如果你想了解更多关于Convnets的信息,好的课程是CS231N–用于视觉识别的卷积神经牛顿.CNN的架构如下图所示:

一个规则的神经网络。
常规神经网络(来自CS231N网站)。
一个convnet网络架构(从cs231n网站)。
一个convnet网络架构(从cs231n网站)。

正如你所看到的,convnets可以处理三维卷和这些三维卷的转换。我不会在这篇文章中重复整个CS231N教程,所以如果你真的感兴趣,继续之前请花些时间阅读。

意大利宽面条

其中一个python包用于深入学习,我真正喜欢使用的是宽面条诺尔文.宽面条是以意大利面条为基础的,所以GPU的加速会有很大的不同,它们的神经网络创建声明性方法非常有用。Nolearn Libary是一个围绕神经网络包(包括千层面)的实用程序集合,在神经网络体系结构的创建过程中可以帮助我们很多,检查各层,等。

我将在这篇文章中展示的内容,是如何构建一个简单的convnet架构,其中包含一些卷积层和池层。我还将演示如何使用convnet来训练一个特性提取器,然后使用它来提取特性,然后将它们输入到不同的模型(如svm)中,逻辑回归,等。许多人使用预先培训过的convnet模型,然后删除最后一个输出层,从接受过ImageNet数据集培训的convnet中提取特征。这通常称为转移学习,因为您可以使用来自其他convnet的层作为不同问题的功能提取器,由于convnets的第一层过滤器用作边缘检测器,它们可以用作其他问题的一般特征检测器。

加载mnist数据集

这个MNIST数据集是数字分类最传统的数据集之一。我们将在python中使用它的腌制版本,但首先,让我们导入需要使用的包:

import matplotlib import matplotlib.pyplot as pltimport matplotlib.cm as cmfrom urllib import urlretrieveimport cpickle as pickleimport osimport gzip import numpy as npiort the noimport lasagnefrom lasagne import layers from lasagne.updates import nesterov momentumfrom nolearn.lasagne import neuralnetfrom nolearn.lasagne import visualizefrom sklearn.指标导入分类_reportfrom sklearn.指标导入混淆_矩阵

正如你所看到的,我们正在导入matplotlib以绘制一些图像,一些本地python模块下载mnist数据集,麻木,西亚诺,宽面条,nolearn和一些scikit学习模型评估功能。

之后,我们定义了mnist加载函数(这与lasagne教程中使用的函数基本相同):

def load_dataset():url='http://deeplearning.net/data/mnist/mnist.pkl.gz'filename='mnist.pkl.gz'如果不是os.path.exists(filename):print(“下载mnist dataset…”)urlretrieve(url,文件名)和gzip.open(文件名,‘rb’)作为f:data=pickle.load(f)x_train,y_train=数据[0]x_val,y_val=数据[1]x_测试,y_test=data[2]x_train=x_train.remote((-1,1,28,28))x_val=x_val.重塑((-1,1,28,28))x_test=x_test.重塑((-1,1,28,28)y_-train=y_-train.astype(np.uint8)y_-val=y_-val.astype(np.uint8)y_-test=y_-test.astype(np.uint8)返回x_-train,yy-列车,西瓦尔耶瓦尔x-检验Y-检验

正如你所看到的,我们正在下载mnist pickled数据集,然后将其解包到三个不同的数据集:train,验证和测试。之后,我们重新调整图像内容的形状,以便稍后将其输入到lasagne输入层中,并且由于gpu/theano数据类型的限制,我们还将numpy数组类型转换为uint8。

之后,我们准备加载mnist数据集并检查它:

XY-火车yy-列车,西瓦尔耶瓦尔x-检验y_test=load_dataset()plt.imshow(x_train[0][0],CMAP=厘米二进制

上面的代码将输出以下图像(我正在使用ipython笔记本):

一个mnist数字的例子(在本例中为5)。
一个mnist数字的例子(在本例中为5)。

convnet架构和培训

现在我们可以定义convnet架构,然后使用gpu/cpu对其进行培训(我有一个非常便宜的gpu,bepaly亚洲但这有很大帮助):

net1=神经网络(层=[('输入',层。输入层)(Cu2D1)层。conv2dlayer)(Max PoOL1)层.maxpool2dllayer)(Cu2D2)层。conv2dlayer)(Max POLL2)层.maxpool2dllayer)(DROPUT1)层。DropOutlayer)(稠密)层。致密层)(DROPUT2)层。DropOutlayer)(输出)层。致密层),输入层输入_形状=(无,1,28,28)layer conv2d1 conv2d1_num_filters=32,conv2d1_filter_size=(5,5)conv2d1_非线性=千层面。非线性。校正,conv2d1_w=lasagne.init.glorotUniform(),层MaxPool1 MaxPool1_Pool_大小=(2,2)层conv2d2 conv2d2_num_filters=32,conv2d2_filter_size=(5,5)conv2d2_非线性=千层面。非线性。校正,层MaxPool2 MaxPool2_池大小=(2,2)辍学1辍学1_p=0.5,致密覕num覕单位=256,致密非线性=千层面非线性校正,Dropot2 Dropot2_p=0.5,输出非线性度=千层面非线性度.softmax,输出_num_units=10,优化方法参数更新=Nesterov_动量,更新学习率=0.01,更新动量=0.9,最大周期=10,详细=1,)训练网络nn=net1.fit(x_训练,y-列车

正如你所看到的,在参数中我们用层名称/类型定义一个元组字典,然后定义这些层的参数。我们的体系结构在这里使用两个带池的卷积层,然后是一个完全连接的层(密集层)和输出层。有些层之间也有辍学现象,Dropout层是一个正则化器,它将输入值随机设置为零,以避免过度拟合(参见下图)。

退出层效果(从CS231N网站)。
退出层效果(从CS231N网站)。

在呼叫火车方法,nolearn软件包将显示学习过程的状态,在我的机器上,我使用的是不起眼的GPU,结果如下:

具有160362可学习参数的神经网络层信息名称大小----------------0输入1X28x28 1 conv2d1 32x24x24 2 maxpool1 32x12x12 3 conv2d2 32x8x8 4 maxpool2 32x4x4 5 dropout1 32x4x4 6密集256 7 dropout2 256 8输出10 epoch列丢失有效丢失列/val有效加速时间-------------------------------------------------------------1 0.85204 0.16707 5.09977 0.95174 33.71S 2 0.27571 0.10732 2.56896 0.96825 33.34S 3 0.20262 0.08567 2.36524 0.97488 33.51S 4 0.16551 0.07695 2.15081 0.97705 33.50S 5 0.14173 0.06803 2.08322 0.98061 34.38S 6 0.12519 0.06067 2.06352 0.98239 34.02S 7 0.11077 0.05532 2.00254 0.98427 33.78S 8 0.10497 0.05771 1.81898 0.98248 34.17S 9 0.09881 0.05159 1.91509 0.98407 33.80S 10 0.09264 0.04958 1.86864 0.98526 3340年代

正如你所看到的,最终准确度为0.98526,10个学期的训练表现很好。

预测与混淆矩阵

现在,我们可以使用该模型预测整个测试数据集:

preds=net1.预测(x_测试)

我们还可以绘制一个混淆矩阵来检查神经网络分类的性能:

cm=混淆矩阵(y_测试,preds)plt.matshow(cm)plt.title(“混淆矩阵”)plt.colorbar()plt.ylabel(“真标签”)plt.xlabel(“预测标签”)plt.show())

上面的代码将绘制以下混淆矩阵:

混淆矩阵
混淆矩阵

正如你所看到的,对角线是分类更密集的地方,显示了我们的分类器的良好性能。

过滤器可视化

我们还可以可视化第一个卷积层中的32个滤波器:

可视化.plot_conv_weights(net1.layers_['conv2d1'])

上面的代码将绘制以下过滤器:

第一层5x5x32过滤器。
第一层5x5x32过滤器。

正如你所看到的,诺尔文绘制转换权重绘制指定层中存在的所有过滤器。

无层函数与特征提取

现在是时候创建一个无编译函数,将输入数据前馈到您感兴趣的层中。我将得到输出层和输出层之前的密集层的函数:

密集层=层。获取输出(net1.layers密集层],deterministic=true)output_layer=layers.get_output(net1.layers_['output'],determinatic=true)input_var=net1.layers_['input']input_varf_output=theano.function([input_var],输出层)f_denside=theano.函数([input_var],脱层

正如你所看到的,我们现在有两个调用的theano函数FX输出F-稠密(对于输出层和密集层)。请注意,为了在此处获取层,我们使用了一个名为“的额外参数。”确定性的“这是为了避免辍学层影响我们的前馈通过。

我们现在可以将示例实例转换为输入格式,然后将其输入到输出层的theano函数中:

instance=x_测试[0][none,:,:]%timeit-n 500 f_输出(实例)500个循环,最佳3:858微秒/圈

正如你所看到的,f_输出函数的平均值为858_礹。我们还可以为以下实例绘制输出层激活:

pred=f_输出(实例)n=pred.shape[1]plt.bar(范围(n),雷维尔()

上面的代码将创建以下图:

输出层激活。
输出层激活。

正如你所看到的,数字被识别为数字7。您可以为网络的任何层创建ano函数,这一事实非常有用,因为您可以创建一个函数(就像我们之前所做的那样)来获取密集层(输出层之前的那个)的激活,并且您可以将这bepaly亚洲些激活用作特征,并使用神经网络而不是作为分类器,而是作为特征提取器。现在让我们绘制密集层的256个单位激活:

pred=f_致密(实例)n=pred.shape[1]plt.bar(范围(n),雷维尔()

上面的代码将创建以下绘图:

致密层活化。
致密层活化。

现在,您可以使用这256个激活的输出作为线性分类器(如逻辑回归或SVM)的特性。

希望你喜欢这个教程!

克里斯蒂安S.佩隆

56评论

  1. 谢谢你的文章!这是非常有用的bepaly亚洲-尤其是关于绘制卷积层。

    旁白:pickle可以运行任意代码,因此如果可能的话最好避免。不过,我理解这会使教程变得更容易。

    1. 你好,

      我刚接触宽面条,开始实施CNN。我在存储经过训练的网络参数时遇到了一个问题。明确地,我正在使用ImageNet。
      当我这样做的时候:
      nn=net1.fit(x列,y-列车

      并尝试通过pickle.dump()保存“nn”,我想我已经没有记忆了。

      你能给我推荐一种方法来存放这么大的意大利面吗?我试过用Jason和HD5,但他们不支持千层面。

      谢谢,
      阿维塞克

      1. imagenet足够大,可以使python的pickle崩溃,并产生最大的递归错误。因此,在保存之前必须增加python的递归限制:

        导入系统
        sys.setrecursionlimit(10000)

        X,y= Loop2D-()
        NET6. FIT(X)是)

        导入pickle as pickle
        打开时(“net6.pickle”,“WB”作为F:
        pickle.dump(net6,F、F、- 1)

  2. 谢谢你写这篇文章。我发现它对加快烤宽面条bepaly亚洲和诺尔根的速度非常有用。

    最后,您将讨论如何将CNN的最后一层插入到SVM中。这种方法是否与卷积核网络讨论的方法相似:http://yann.lecun.com/exdb/publis/pdf/huang-lecun-06.pdf?我很好奇看bepaly亚洲到这个的实现。

    我发现移除第一个辍学层可以提高测试精度。

  3. 谢谢你写这篇文章。
    而且,我有些错误。
    例如。,1-输出形状=层。获取输出形状()
    attributeError:“denselayer”对象没有“get-output-shape”属性
    2-从千层面。目标导入MSE
    导入错误:无法导入名称mse

  4. 嘿,
    这篇文章对初学者来说真是太好了。数据集本身的预测是准确的。但当我试图给出一个不属于数据集的图像时,它给出了尺寸误差。我意识到大小和通道与输入层不匹配,所以我将其调整为28,28,但仍然会产生相同的错误。
    这就是错误。

    类型错误:('名称为“/home/raza/workspace/test/convnet/downest.py:166”且位于索引0(0-based)处的no函数的错误输入参数','错误的维度数:应为4,得到3个形状(28,28,4)

  5. 是否有人收到有关未找到全局变量的错误忽略_bmax_pool_2d()和顺序?

    定义初始化(self,进来的,池大小步幅=无,pad=(0,0)
    忽略_border=true,**夸格斯):
    超级(MaxPool2dLayer,self)。初始化(传入,
    池大小
    大步走,
    衬垫,
    忽略_bmax_pool_2d()顺序,
    模式=“MAX”,
    **夸格斯)

    其次,类型错误:max_pool_2d()在同一pool.py文件中获得了意外的关键字参数“mode”。

    如果有解决方案,请告诉我。

  6. 你好,
    首先,谢谢你的文章,这很有帮助。bepaly亚洲
    然而,我在想,在运行代码“mnist dataset loading”之后,是否获得了一个gz文件是正常的。因此,我解压它,然后我得到了一个pkl文件,我不知道如何打开这个文件。

    谢谢你的帮助

  7. 感谢您对convnets的精彩介绍。帮了我很多忙。

    关于你的y变量,我有一个问题。我期望它们被表示为一个热变量(因为您有10个输出节点,每个节点代表一个数字)。哪里,例如,A 2转换为[0,0,1.0,0,0,0,0,0,0,0。
    但你跳过这一步,网络仍然可以正常工作。这怎么可能?后台是否有某种隐式转换?

    1. 我自己找到了解决方案。我的样例代码,这是本教程中的代码和自己的代码的混合,投诉了Y_火车变量的尺寸。关闭回归标志后,网络按预期运行。

  8. 你好,我昨天发了推特给你,你让我解释一下这里的问题。
    我使用Ubuntu 14.04 LTS,python 2.7.11 anaconda 2.4.1(64位),我使用spyder。所有的图书馆,我用的,已更新并升级到最新版本。例如,我已经将lasagne.objectives import mse改为lasagne.objectives import squared_error。
    我遇到的错误是:
    1)来自nolearn.lasagne import visualize
    行给出错误:
    回溯(最近一次呼叫的最后一次):
    文件“,”第1行,在里面
    导入错误:无法导入名称可视化
    2)nn=net1.fit(x_列,y-列车

    行给出错误:

    回溯(最近一次呼叫的最后一次):
    文件“,”第1行,在里面
    文件“/usr/local/lib/python2.7/dist packages/nolearn/lasagne.py”,第140行,合身
    self.\u打印图层信息(self.get\u all\u layers())
    文件“/usr/local/lib/python2.7/dist packages/nolearn/lasagne.py”,第376行,打印层信息
    output_shape=layer.get_output_shape()
    attributeError:“denselayer”对象没有“get-output-shape”属性

    3)preds=net1.预测(x_检验)

    行给出错误:

    回溯(最近一次呼叫的最后一次):
    文件“,”第1行,在里面
    文件“/usr/local/lib/python2.7/dist packages/nolearn/lasagne.py”,第249行,在预测中
    y_pred=np.argmax(self.predict_proba(x)、轴=1)
    文件“/usr/local/lib/python2.7/dist packages/nolearn/lasagne.py”,第242行,在预测中
    probas.append(自我预测)
    attributeError:“neuralnet”对象没有“predict”属性

    4)密集层=层。获取输出(net1.层密集],确定性=真)
    output_layer=layers.get_output(net1.layers_['output'],确定性=真)
    input_var=net1.层[‘input’]input_var

    密集层=层。获取输出(net1.layers密集层],确定性=真)
    output_layer=layers.get_output(net1.layers_['output'],确定性=真)
    input_var=net1.层[‘input’]input_var

    这6行给出了相同的错误:

    回溯(最近一次呼叫的最后一次):
    文件“,”第1行,在里面
    attributeError:“neuralnet”对象没有“layers”属性

    我不耐烦地等着你的帮助。谢谢你抽出时间。

    谨致问候

  9. 嘿,我想可视化卷积层的输出。我使用了命令visualize.plot_conv_weights(),但它什么也没显示。有人能帮我吗?

  10. 好人。谢谢你的精彩教程。我是CNN的新成员,尝试在python中实现。我很难用OpenCL配置我的GPU。但是,这是另一段历史。您知道一些创建数据库的引用吗,比如mnist。我有一些图像来创建数据集,但我在这项任务中迷失了方向。提前谢谢

    1. 使用lmdb数据库..如果你知道如何使用CAFE深度学习库,那么使用数据库会更容易。您还必须了解如何应用lmdb数据库与宽面条一起工作。一个简单的谷歌搜索会让你开始

  11. 我要对使用mnist数字训练的数字进行手写识别。

    通常情况下,人们从图像中提取猪的特征,然后使用SVM对其进行训练。在预测期间,从实际图像中提取猪特征,并进行预测。

    但是,我想用你在博客中提到的卷积网络做同样的事情。98.5%的准确率令人惊叹,考虑到与其他复杂且计算强度较高的网络相比,计算强度较小,我目前正在用pickle对“net1”对象进行序列化。我不知道从真实图像中提取什么样的特征,然后将其输入分类器进行预测。

    1. 帕尔索我正试图给你发一封电子邮件,但它总是返回一个错误,说你的邮件被阻止了。除了以@asu.edu结尾的邮件,你还有其他邮件吗?你可以在这里回答,我会删除评论后,看到它,以避免垃圾邮件到您的邮箱。

      1. 先生,我想在无人机上进行目标识别中的实时跟踪和机器学习,我该如何实现。

  12. 我想使用从CNN代码中提取的特性,并使用SVM分类器对其进行培训,正如您在最后提到的那样。我不理解的是应该向分类器提供什么。你能帮帮我吗?

  13. 你好,
    非常感谢你的文章。bepaly亚洲
    我有一个简单的问题要问。我想用百分误差来干扰权重,然后我想用同样数据上带扰动权重的网络来比较结果。
    有人愿意帮忙吗?
    顺便说一句,我对Python和所有这些库都很陌生。

  14. 谢谢你写这篇文章。我真的很喜欢你用theano提示如何将SVM置于深度网络(vg16)之上的地方。医学图像是我要尝试的技术。在我的医学图像数据集bepaly亚洲中有很少的例子(大约300个)。我认为你的建议会对你有很大帮助。

  15. 非常感谢你的指导。我已经在82800个实例的数据集(数字和字母)上尝试过您的教程,但是当我尝试使用f_密集进行特征提取时,下面是一些错误:

    如果我跑
    pred=f_密集(输入)

    MemoryError回溯(最近调用的最后一个)
    在()
    -->1 pred=f_密度(x_试验)

    /srv/python dl/py env/local/lib/python2.7/site-packages/theano/compile/function_module.pyc in uuu call_uuuu(self,*参数,**夸格斯)
    869 node=self.fn.nodes[self.fn.position_of_error],
    870 thunk=thunk,
    –>871存储图=getattr(self.fn,'存储地图',无)
    872其他:
    873老式链接器提出了自己的例外情况

    /srv/python dl/py env/local/lib/python2.7/site-packages/theano/gof/link.pyc in raiseou withou op(节点,thunk,ExcIfIn,储藏地图
    312这种情况下的超长错误消息。
    313通
    –>314重新提升(不包括类型,异常值,余迹)
    三百一十五
    三百一十六

    /srv/python dl/py env/local/lib/python2.7/site-packages/theano/compile/function_module.pyc in uuu call_uuuu(self,*参数,**夸格斯)
    857 t0_fn=时间。时间()
    858试试:
    –>859输出=self.fn()
    860,例外情况除外:
    861如果hasattr(self.fn,'位置'u of_错误'):

    内存错误:分配368640000字节设备内存时出错(cnmem_status_out_of_memory)。
    应用导致错误的节点:gpualLocEmpty(shape_i_0.0,形状0.0,电复合(((I0+I1)–I2)//I3)+I3)[(0,0)] 0,电复合(((I0+I1)–I2)//I3)+I3)[(0,0)] 0)
    地形索引:30
    输入类型:【TensorType(Int64,标量),TensorType(Int64,标量),TensorType(Int64,标量),TensorType(Int64,标量)
    输入形状:[(),()()()
    输入步幅:[(),()()()
    输入值:【数组(5000)】数组(32),数组(24),数组(24)]
    输出客户端:【gpudnnconv algo='small',inplace=真(gpucontigous.0,gpucontigous.0,gpualLocEmpty.0,gpudnnconfDesc border mode='valid',子样本=(1),1)conv_mode='conv',precision='float32'.0,常数{1 },常数0.0)]]

    提示:在禁用大多数theano优化的情况下重新运行可能会对创建此节点的时间进行回溯。这可以通过设置“optimizer=fast_compile”的ano标志来完成。如果不起作用,使用“optimizer=none”可以禁用无优化。
    提示:对于此应用节点的debugprint和存储映射示意图,请使用no标志“exception_verbosity=high”。

    请帮帮我。

  16. 运行此程序时出错

    回溯(最近一次呼叫的最后一次):
    文件“d:\anaconda\lib\site packages\pythonwin\pywin\framework\scriptuils.py”,第326行,在RunScript
    exec(代码对象,主口述
    文件“d:\anaconda\lib\idlelib\programs\p1.py”,第79行,在里面
    nn=net1.fit(x_列,y_列)
    名称错误:未定义名称“x_train”

    请给我你的建议

  17. 你好,

    谢谢你的文章。我想对我创建的图像数据集进行培训。我已将图像转换为np数组,并更改了网络的参数以反映接受的输入层的大小(在我的例子中是100×100图像)。

    但是我得到了一些错误,比如indexerror:index 10超出了轴0的界限,大小为10
    应用导致错误的节点:CrossEntropySoftMaxArgMax1HotWithBias(dot22.0,输出,YY-批处理)

    是否有任何教程可以指导我如何构建这个数据集?

    谢谢

  18. 嗨,克里斯蒂安,

    谢谢你的精彩文章。我在试你的密码。但是当“训练模型”时,它在永恒地奔跑。我没有得到任何可以调试的错误。你能提出什么问题吗?我正在使用带有4 GB RAM的Windows 10。

    当做,
    阿里吉特

    1. 嗨,Arijit,
      你能告诉我诺尔文的当前版本吗?意大利宽面条和西亚诺,你的终端上安装了吗?

      1. 嘿,Vibhor,

        我和阿里吉有同样的问题
        不管有多少可用的内存(我有16GB),内存似乎都会达到最大值,这对第一次输出很好,但是程序很难找到所需的内存(因为它已经使用了大部分内存?)

        软件包版本:
        nolearn=0.6比27_0
        千层面=0.1 py27_0
        t否=0.9 PY27_0

  19. 晚上好,
    我试图运行,结果出错:

    导入错误:无法导入名称“urlretrieve”

    有人能帮我吗?

  20. 嗨,克里斯蒂安,

    如何在NueralNet函数中指定激活函数“relu”?

    谢谢您,
    湿婆

  21. 你好。
    我不明白为什么
    —————————
    0输入1X28X28
    1 conv2d1 32x24x24->为什么是24×24?

    当做

    1. 5×5.阿尔菲特罗塞皮埃尔登2像素阿尔雷德多波尔德在卡达波尔德。Pierden东南部共有4个像素–>28–>24–>las Imagenes Quedan de 24×24。32 es la profundidad(la cantidad de filtros que tenes)

  22. 你好!谢谢你的指导!当我试图跟随它时,我遇到了一些我无法解决的问题。明确地,当我试图从nolearn.lasagne导入neuralnet时,我犯了一系列错误:

    文件“,”第1行,在里面
    从nolearn.lasagne导入neuralnet
    文件“/applications/pycharm ce.app/contents/helpers/pydev/\u pydev\u bundle/pydev\u import\u hook.py”,第21行,在杜氏导入中
    模块=自系统输入(名称,*参数,**夸格斯)
    文件“/users/2128506mj/anaconda/envs/py27/lib/python2.7/site packages/nolearn/lasagne/uu init_uuuu.py”,第1行,在里面
    从.handlers导入(
    文件“/applications/pycharm ce.app/contents/helpers/pydev/\u pydev\u bundle/pydev\u import\u hook.py”,第21行,在杜氏导入中
    模块=自系统输入(名称,*参数,**夸格斯)
    文件“/users/2128506mj/anaconda/envs/py27/lib/python2.7/site packages/nolearn/lasagne/handlers.py”,第12行,在里面
    从.util导入ansi
    文件“/applications/pycharm ce.app/contents/helpers/pydev/\u pydev\u bundle/pydev\u import\u hook.py”,第21行,在杜氏导入中
    模块=自系统输入(名称,*参数,**夸格斯)
    文件“/users/2128506mj/anaconda/envs/py27/lib/python2.7/site packages/nolearn/lasagne/util.py”,第13行,在里面
    从lasagne.layers.cuda_convnet导入conv2dclayer
    文件“/applications/pycharm ce.app/contents/helpers/pydev/\u pydev\u bundle/pydev\u import\u hook.py”,第21行,在杜氏导入中
    模块=自系统输入(名称,*参数,**夸格斯)
    文件“/users/2128506mj/anaconda/envs/py27/lib/python2.7/site packages/lasagne/layers/cuda-convnet.py”,第16行,在里面
    从ano.sandbox.cuda.basic_ops import gpu_continuous
    文件“/applications/pycharm ce.app/contents/helpers/pydev/\u pydev\u bundle/pydev\u import\u hook.py”,第21行,在杜氏导入中
    模块=自系统输入(名称,*参数,**夸格斯)
    文件“/users/2128506mj/anaconda/envs/py27/lib/python2.7/site packages/theano/sandbox/cuda/uuuu init_uuu.py”,第6行,在里面
    “您正在导入ano.sandbox.cuda。这是旧的GPU后端,
    skiptest:您正在导入ano.sandbox.cuda。这是旧的GPU后端,已从主机上卸下。使用0.9号。更好的是,过渡到新的GPU后端!参见https://bepaly亚洲娱乐bet888github.com/theano/theano/wiki/转换到新的GPU后端%28gpuarray%29

    我有一个带10.10操作系统的MacBook Pro。它有英特尔图形芯片,所以我没有安装CUDA。其他功能:使用python 2.7.13_anaconda 4.4.0(x8664)的虚拟环境,Pycharm社区版本2017.2
    我试着重新安装和更新theano和lasagne,以及Pygpu,其中所有我现在都有最新的版本(千层面(0.2.dev1),Theano(0.10.0.dev1),Pygpu(0.6.8))

    我读过这可能是一个问题,因此,我配置了theano,使其使用强制“设备=真”的CPU,但没有帮助。这可能是千层面问题,因为它要求使用sandbox.cuda。

    是否可以将安装程序配置为在不使用CUDA的情况下运行。我该怎么做?任何建议都非常感谢!

    干杯,
    伊凡

  23. 海基督教

    谢谢你的文章,这对我有很大帮助。我有问题,它是用于视频特征提取的?如果不是,我应该换哪一个?谢谢您。

    最好的问候

    曼加拉

  24. 有没有一种方法可以确定训练或测试使用theano和lasagne编写的深度学习模型所需的内存?

  25. 嗨,克里斯蒂安,
    你干得很好。但是由于西亚诺已经完全贬值了,这使得许多问题与诺尔根和千层面兼容。
    您是否可以使用TensorFlow开发一个代码版本?
    干杯,
    布丽姬

留下评论

您的电子邮件地址将不会发布。

此网站使用Akismet来减少垃圾邮件。了解如何处理评论数据.