2018年3月10日
摘要: 15.18 传递已打开的文件给C扩展¶ 问题¶ 你在Python中有一个打开的文件对象,但是需要将它传给要使用这个文件的C扩展。 解决方案¶ 要将一个文件转换为一个整型的文件描述符,使用 PyFile_FromFd() ,如下: PyObject *fobj; /* File object (already obtained somehow) */ int fd = PyObject_AsFileDescriptor(fobj); if (fd < 0) { return NULL; } 结果文件描述符是通过调用 fobj 中的 fileno() 方法获得的。 因此,任何以这种方式暴露给一个描述器的对象都适用(比如文件、套接字等)。 一旦你有了这个描述器,它就能被传递给多个低级的可处理文件的C函数。 如果你需要转换一个整型文件描述符为一个Python对象,适用下面的 PyFile_FromFd() : int fd; /* Existing file descriptor (already open) */ PyObject *fobj = Py 阅读全文
posted @ 2018-03-10 23:45 aibbt_com 阅读(315) 评论(0) 推荐(0) 编辑
摘要: 15.19 从C语言中读取类文件对象¶ 问题¶ 你要写C扩展来读取来自任何Python类文件对象中的数据(比如普通文件、StringIO对象等)。 解决方案¶ 要读取一个类文件对象的数据,你需要重复调用 read() 方法,然后正确的解码获得的数据。 下面是一个C扩展函数例子,仅仅只是读取一个类文件对象中的所有数据并将其输出到标准输出: #define CHUNK_SIZE 8192 /* Consume a "file-like" object and write bytes to stdout */ static PyObject *py_consume_file(PyObject *self, PyObject *args) { PyObject *obj; PyObject *read_meth; PyObject *result = NULL; PyObject *read_args; if (!PyArg_ParseTuple(args,"O", &obj)) { return NULL; 阅读全文
posted @ 2018-03-10 23:33 aibbt_com 阅读(193) 评论(0) 推荐(0) 编辑
摘要: 15.20 处理C语言中的可迭代对象¶ 问题¶ 你想写C扩展代码处理来自任何可迭代对象如列表、元组、文件或生成器中的元素。 解决方案¶ 下面是一个C扩展函数例子,演示了怎样处理可迭代对象中的元素: static PyObject *py_consume_iterable(PyObject *self, PyObject *args) { PyObject *obj; PyObject *iter; PyObject *item; if (!PyArg_ParseTuple(args, "O", &obj)) { return NULL; } if ((iter = PyObject_GetIter(obj)) == NULL) { return NULL; } while ((item = PyIter_Next(iter)) != NULL) { /* Use item */ ... Py_DECREF(item); } Py_DECREF(it 阅读全文
posted @ 2018-03-10 23:29 aibbt_com 阅读(179) 评论(0) 推荐(0) 编辑
摘要: http://www.aibbt.com/a/20118.html 阅读全文
posted @ 2018-03-10 23:27 aibbt_com 阅读(195) 评论(0) 推荐(0) 编辑
摘要: 关键词:theano安装,搭建theano环境, python, 深度学习 因为需要安装theano,结果发现这又是一个难以安装的python包…虽然网上教程不少,然而鱼龙混杂,试验了各种方法流程,最后总算是弄好了,现在把我的过程总结如下: 安装环境 64位win7系统,显卡:GT 730M,笔记本电脑; 已安装Visual Studio 2013 (都说VS2015太新不推荐); 借助Anaconda来安装theano,因为Anaconda已经集成了很多有用的python库,如numpy、nose、scipy等,强烈推荐。 阅读全文
posted @ 2018-03-10 20:25 aibbt_com 阅读(2948) 评论(0) 推荐(0) 编辑
摘要: Keras官方中文文档:keras后端Backend 阅读全文
posted @ 2018-03-10 20:17 aibbt_com 阅读(4370) 评论(0) 推荐(0) 编辑
摘要: 函数式模型接口 为什么叫“函数式模型”,请查看“Keras新手指南”的相关部分 Keras的函数式模型为Model,即广义的拥有输入和输出的模型,我们使用Model来初始化一个函数式模型 from keras.models import Model from keras.layers import Input, Dense a = Input(shape=(32,)) b = Dense(32)(a) model = Model(inputs=a, outputs=b) 在这里,我们的模型以a为输入,以b为输出,同样我们可以构造拥有多输入和多输出的模型 model = Model(inputs=[a1, a2], outputs=[b1, b3, b3]) 常用Model属性 阅读全文
posted @ 2018-03-10 17:04 aibbt_com 阅读(573) 评论(0) 推荐(0) 编辑
摘要: 常用Sequential属性 model.layers是添加到模型上的层的list Sequential模型方法 add add(self, layer) 向模型中添加一个层 layer: Layer对象 阅读全文
posted @ 2018-03-10 17:02 aibbt_com 阅读(258) 评论(0) 推荐(0) 编辑
摘要: 关于Keras模型 Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况。 两类模型有一些方法是相同的: model.summary():打印出模型概况,它实际调用的是keras.utils.print_summary model.get_config():返回包含模型配置信息的Python字典。模型也可以从它的config信息中重构回去 阅读全文
posted @ 2018-03-10 17:01 aibbt_com 阅读(276) 评论(0) 推荐(0) 编辑
摘要: 快速开始序贯(Sequential)模型 序贯模型是多个网络层的线性堆叠,也就是“一条路走到黑”。 可以通过向Sequential模型传递一个layer的list来构造该模型: from keras.models import Sequential from keras.layers import Dense, Activation model = Sequential([ Dense(32, units=784), Activation('relu'), Dense(10), Activation('softmax'), ]) 阅读全文
posted @ 2018-03-10 16:57 aibbt_com 阅读(419) 评论(0) 推荐(0) 编辑