摘要:
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 阅读全文
摘要:
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;
阅读全文
摘要:
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 阅读全文
摘要:
http://www.aibbt.com/a/20118.html 阅读全文
摘要:
关键词:theano安装,搭建theano环境, python, 深度学习
因为需要安装theano,结果发现这又是一个难以安装的python包…虽然网上教程不少,然而鱼龙混杂,试验了各种方法流程,最后总算是弄好了,现在把我的过程总结如下:
安装环境
64位win7系统,显卡:GT 730M,笔记本电脑;
已安装Visual Studio 2013 (都说VS2015太新不推荐);
借助Anaconda来安装theano,因为Anaconda已经集成了很多有用的python库,如numpy、nose、scipy等,强烈推荐。 阅读全文
摘要:
Keras官方中文文档:keras后端Backend 阅读全文
摘要:
函数式模型接口
为什么叫“函数式模型”,请查看“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属性 阅读全文
摘要:
常用Sequential属性
model.layers是添加到模型上的层的list
Sequential模型方法
add
add(self, layer)
向模型中添加一个层
layer: Layer对象 阅读全文
摘要:
关于Keras模型
Keras有两种类型的模型,序贯模型(Sequential)和函数式模型(Model),函数式模型应用更为广泛,序贯模型是函数式模型的一种特殊情况。
两类模型有一些方法是相同的:
model.summary():打印出模型概况,它实际调用的是keras.utils.print_summary
model.get_config():返回包含模型配置信息的Python字典。模型也可以从它的config信息中重构回去 阅读全文
摘要:
快速开始序贯(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'),
]) 阅读全文