Neural net类用层来创建网络并提供可以获取网络信息(比如:参数)的函数。
示例用法:
from singa import net as ffnet from singa import metric from singa import loss from singa import layer from singa import device # create net and add layers net = ffnet.FeedForwardNet(loss.SoftmaxCrossEntropy(), metric.Accuracy()) net.add(layer.Conv2D('conv1', 32, 5, 1, input_sample_shape=(3,32,32,))) net.add(layer.Activation('relu1')) net.add(layer.MaxPooling2D('pool1', 3, 2)) net.add(layer.Flatten('flat')) net.add(layer.Dense('dense', 10)) # init parameters for p in net.param_values(): if len(p.shape) == 0: p.set_value(0) else: p.gaussian(0, 0.01) # move net onto gpu dev = device.create_cuda_gpu() net.to_device(dev) # training (skipped) # do prediction after training x = tensor.Tensor((2, 3, 32, 32), dev) x.uniform(-1, 1) y = net.predict(x) print tensor.to_numpy(y)
基类:object
将网络移至指定设备上,包括所有参数和中间数据。
添加一个层到层列表中。
该功能将从src层获取样本形状以设置新添加的层。 对于第一层,它被设置在外部。 调用函数应确保层顺序的正确性。 如果src是None,最后一层是src层。 如果有多个src图层,则src是src层的列表。
参数:
返回所有参数的tensor列表。
返回所有参数的ParamSpec列表。
返回所有参数名列表。。
运行一次BP。 目前仅支持单输出层、单损失函数及度量方法的网络。 TODO(wangwei) 考虑多损失函数和多度量值。
参数:
返回值: 参数梯度,损失函数和度量值
根据给定数据评估损失函数和度量值。目前仅支持单输出层、单损失函数及度量方法的网络。TODO(wangwei) 考虑多损失函数和多度量值。
参数:
向前经每个层传递数据到输出层并获得输出值。 目前仅支持单输出层的网络。
参数:
返回值: 单个输出tensor作为预测结果
对所有层进行拓扑排序。 对于多输入层,将会保留输入层的顺序。
参数:
返回值: 排序后层列表
将输入经过每个层向前传递。 如果一个层具有来自其他层和来自x的输入,则来自x的数据在来自其他层的数据之前被排序,例如,如果层1->层2并且x [‘layer2’]具有数据,则输入层2展平,即[x [‘layer2’],层1的输出]
参数:
返回值: 如果只有一个输出层,返回输出tensor;否则返回字典:层名->输出tensor
运行向后传递
返回值: 所有参数的梯度tensor列表。
用io/snapshot保存模型参数。
参数:
用io/snapshot加载模型参数。请参照save()的参数描述。