1 Star 1 Fork 6

张觉非/计算图框架

加入 Gitee
与超过 1200万 开发者一起发现、参与优秀开源项目,私有仓库也完全免费 :)
免费加入
文件
该仓库未声明开源许可证文件(LICENSE),使用请关注具体项目描述及其代码上游依赖。
克隆/下载
layer.py 1.85 KB
一键复制 编辑 原始数据 按行查看 历史
张觉非 提交于 6年前 . 加入向量的数乘
from node import *
def conv(feature_maps, input_shape, kernels, kernel_shape, activation):
"""
:param feature_maps:
:param input_shape:
:param kernels:
:param kernel_shape:
:param activation:
:return:
"""
# 与输入同形状的全 1 矩阵
ones = Variable(input_shape, init=False, trainable=False)
ones.set_value(np.mat(np.ones(input_shape)))
outputs = []
for i in range(kernels):
channels = []
for fm in feature_maps:
kernel = Variable(kernel_shape, init=True, trainable=True)
conv = Convolve(fm, kernel)
channels.append(conv)
channles = Add(*channels)
bias = ScalarMultiply(Variable((1, 1), init=True, trainable=True), ones)
# bias = Variable(input_shape, init=True, trainable=True)
affine = Add(channles, bias)
if activation == "ReLU":
outputs.append(ReLU(affine))
elif activation == "Logistic":
outputs.append(Logistic(affine))
else:
outputs.append(affine)
assert len(outputs) == kernels
return outputs
def pooling(feature_maps, kernel_shape, stride):
"""
:param feature_maps:
:param kernel_shape:
:param stride:
:return:
"""
outputs = []
for fm in feature_maps:
outputs.append(MaxPooling(fm, size=kernel_shape, stride=stride))
return outputs
def fc(input, input_size, size, activation):
"""
:param input:
:param input_size:
:param size:
:param activation:
:return:
"""
weights = Variable((size, input_size), init=True, trainable=True)
bias = Variable((size, 1), init=True, trainable=True)
affine = Add(MatMul(weights, input), bias)
if activation == "ReLU":
return ReLU(affine)
elif activation == "Logistic":
return Logistic(affine)
else:
return affine
Loading...
马建仓 AI 助手
尝试更多
代码解读
代码找茬
代码优化
Python
1
https://gitee.com/zhangjuefei/computing_graph_demo.git
git@gitee.com:zhangjuefei/computing_graph_demo.git
zhangjuefei
computing_graph_demo
计算图框架
master

搜索帮助