本文整理汇总了Python中quagga.matrix.Matrix类的典型用法代码示例。如果您正苦于以下问题:Python Matrix类的具体用法?Python Matrix怎么用?Python Matrix使用的例子?那么恭喜您, 这里精选的类代码示例或许可以为您提供帮助。
在下文中一共展示了Matrix类的20个代码示例,这些例子默认根据受欢迎程度排序。您可以为喜欢或者感觉有用的代码点赞,您的评价将有助于我们的系统推荐出更棒的Python代码示例。
示例1: test_fprop
def test_fprop(self):
"""
compare `fprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
batch_size, x_dim = self.rng.random_integers(3000, size=2)
x = self.rng.rand(batch_size, x_dim).astype(np.float32)
for nonlinearity in ['sigmoid', 'tanh', 'relu']:
state = self.rng.get_state()
quagga.processor_type = 'gpu'
x_gpu = Connector(Matrix.from_npa(x))
nonlinearity_block = NonlinearityBlock(x_gpu, nonlinearity)
x_gpu.fprop()
nonlinearity_block.fprop()
output_gpu = nonlinearity_block.output.to_host()
self.rng.set_state(state)
quagga.processor_type = 'cpu'
x_cpu = Connector(Matrix.from_npa(x))
nonlinearity_block = NonlinearityBlock(x_cpu, nonlinearity)
x_cpu.fprop()
nonlinearity_block.fprop()
output_cpu = nonlinearity_block.output.to_host()
r.append(np.allclose(output_gpu, output_cpu))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:29,代码来源:test_NonlinearityBlock.py
示例2: __init__
def __init__(self, W, b, x, device_id=None):
self.f_context = Context(device_id)
device_id = self.f_context.device_id
if W.bpropagable:
self.W, self.dL_dW = W.register_usage(device_id, device_id)
else:
self.W = W.register_usage(device_id)
if b:
if b.bpropagable:
self.b, self.dL_db = b.register_usage(device_id, device_id)
self.ones = Matrix.empty(x.nrows, 1, self.b.dtype, device_id)
self.ones.sync_fill(1.0)
else:
self.b = b.register_usage(device_id)
if x.bpropagable:
self.x, self.dL_dx = x.register_usage(device_id, device_id)
else:
self.x = x.register_usage(device_id)
output = Matrix.empty(x.nrows, self.W.ncols, device_id=device_id)
self.learning = hasattr(self, 'dL_dW') or hasattr(self, 'dL_db') or \
hasattr(self, 'dL_dx')
if self.learning:
self.b_context = Context(device_id)
self.output = Connector(output, device_id)
else:
self.output = Connector(output)
开发者ID:Sandy4321,项目名称:quagga,代码行数:28,代码来源:DotBlock.py
示例3: __init__
def __init__(self, x, nonlinearity, device_id=None):
"""
"""
self.f_context = Context(device_id)
device_id = self.f_context.device_id
self.learning = x.bpropagable
if self.learning:
self.b_context = Context(device_id)
self.x, self.dL_dx = x.register_usage(device_id, device_id)
self._df_dpref = Matrix.empty_like(self.x, device_id)
else:
self.x = x.register_usage(device_id)
output = Matrix.empty_like(x, device_id)
self.output = Connector(output, device_id if self.learning else None)
if nonlinearity == "sigmoid":
self.f = self.x.sigmoid
elif nonlinearity == "tanh":
self.f = self.x.tanh
elif nonlinearity == "relu":
self.f = self.x.relu
elif nonlinearity == "softmax":
raise ValueError("For softmax nonlinearity use SoftmaxBlock!")
else:
raise ValueError("TODO!")
self.training_mode = True
开发者ID:yiiwood,项目名称:quagga,代码行数:27,代码来源:NonlinearityBlock.py
示例4: register_usage
def register_usage(self, fu_device_id, bo_device_id=None):
"""
Register usage of connector's forward_matrix.
:param fu_device_id: context in which `forward_matrix` will be used
:param bo_device_id: context in which `backward_matrix`
of the connector will be calculated
"""
if not self.bpropagable and bo_device_id:
raise ValueError("Nobody is going to use computation from backward step. "
"You mustn't register for backward propagate!")
if fu_device_id != self._fo_device_id and fu_device_id not in self._f_matrices:
self._f_matrices[fu_device_id] = Matrix.empty_like(self, fu_device_id)
self.context[fu_device_id] = Context(fu_device_id)
if bo_device_id is None:
return self._f_matrices[fu_device_id]
for device_id in [self._bu_device_id, bo_device_id]:
if device_id not in self._b_matrices:
self._b_matrices[device_id] = Matrix.empty_like(self, device_id)
if device_id not in self.context:
self.context[device_id] = Context(device_id)
if self._bu_device_id != bo_device_id and self._bu_device_id not in self._b_matrices_pool:
self._b_matrices_pool[self._bu_device_id] = Matrix.empty_like(self, self._bu_device_id)
return self._f_matrices[fu_device_id], self._b_matrices[bo_device_id]
开发者ID:Sandy4321,项目名称:quagga,代码行数:26,代码来源:Connector.py
示例5: test_theano_fprop_vector
def test_theano_fprop_vector(self):
r = []
for _ in xrange(self.N):
embd_dim = self.rng.random_integers(10000)
batch_size, output_dim = self.rng.random_integers(2000, size=2)
W = self.get_orthogonal_matrix(embd_dim, output_dim)
row_idxs = self.rng.randint(embd_dim, size=(batch_size, 1)).astype(np.int32)
quagga.processor_type = 'gpu'
qrow_idxs = Connector(Matrix.from_npa(row_idxs))
qW = Connector(Matrix.from_npa(W))
row_slicing_block = RowSlicingBlock(qW, qrow_idxs)
qW.fprop()
qrow_idxs.fprop()
row_slicing_block.fprop()
q_output = row_slicing_block.output.to_host()
trow_idxs = T.ivector()
row_slicing_layer = RowSlicingLayer(W)
t_output = row_slicing_layer.get_output_expr(trow_idxs)
t_output = theano.function([trow_idxs], t_output)(row_idxs[:, 0])
r.append(np.allclose(q_output, t_output))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:25,代码来源:test_RowSlicingBlock.py
示例6: test_bprop
def test_bprop(self):
r = []
for i in xrange(self.N):
repeats = self.rng.random_integers(42)
axis = self.rng.randint(2)
input_dim, output_dim = self.rng.random_integers(2000, size=2)
x = self.get_normal_matrix(input_dim, output_dim)
input_dim = input_dim if axis else input_dim * repeats
true_labels = self.rng.randint(output_dim, size=(input_dim, 1)).astype(np.int32)
device_id = 0
output = {}
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qx = Connector(Matrix.from_npa(x), device_id)
qtrue_labels = Connector(Matrix.from_npa(true_labels))
repeat_block = RepeatBlock(qx, repeats, axis)
sce_block = SoftmaxCeBlock(repeat_block.output, qtrue_labels)
qx.fprop()
qtrue_labels.fprop()
repeat_block.fprop()
sce_block.fprop()
sce_block.bprop()
repeat_block.bprop()
output[processor_type] = qx.backward_matrix.to_host()
r.append(np.allclose(output['gpu'], output['cpu']))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:29,代码来源:test_RepeatBlock.py
示例7: test_bprop_vector
def test_bprop_vector(self):
r = []
for _ in xrange(self.N):
embd_dim = self.rng.random_integers(10000)
batch_size, output_dim = self.rng.random_integers(2000, size=2)
W = self.get_orthogonal_matrix(embd_dim, output_dim)
row_idxs = self.rng.randint(embd_dim, size=(batch_size, 1)).astype(np.int32)
true_labels = self.rng.randint(output_dim, size=(batch_size, 1)).astype(np.int32)
device_id = 0
output = {}
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qrow_idxs = Connector(Matrix.from_npa(row_idxs))
qtrue_labels = Connector(Matrix.from_npa(true_labels))
qW = Connector(Matrix.from_npa(W), device_id)
row_slicing_block = RowSlicingBlock(qW, qrow_idxs)
sce_block = SoftmaxCeBlock(row_slicing_block.output, qtrue_labels)
qW.fprop()
qrow_idxs.fprop()
row_slicing_block.fprop()
sce_block.fprop()
sce_block.bprop()
row_slicing_block.bprop()
qW.add(Context(), qW.backward_matrix)
output[processor_type] = qW.to_host()
r.append(np.allclose(output['gpu'], output['cpu']))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:30,代码来源:test_RowSlicingBlock.py
示例8: test_fprop
def test_fprop(self):
"""
compare `fprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
max_input_sequence_len = self.rng.random_integers(500)
sequence_len = max_input_sequence_len if i == 0 else self.rng.random_integers(max_input_sequence_len)
batch_size = self.rng.random_integers(512)
dim = self.rng.random_integers(1500)
x = [self.rng.rand(batch_size, dim).astype(dtype=np.float32) for _ in xrange(max_input_sequence_len)]
state = self.rng.get_state()
quagga.processor_type = 'gpu'
x_gpu = List([Connector(Matrix.from_npa(e)) for e in x])
smean_pooling_block_gpu = SequentialMeanPoolingBlock(x_gpu)
x_gpu.set_length(sequence_len)
smean_pooling_block_gpu.fprop()
output_gpu = smean_pooling_block_gpu.output.to_host()
self.rng.set_state(state)
quagga.processor_type = 'cpu'
x_cpu = List([Connector(Matrix.from_npa(e)) for e in x])
smean_pooling_block_cpu = SequentialMeanPoolingBlock(x_cpu)
x_cpu.set_length(sequence_len)
smean_pooling_block_cpu.fprop()
output_cpu = smean_pooling_block_cpu.output.to_host()
r.append(np.allclose(output_gpu, output_cpu))
self.assertEqual(sum(r), self.N)
开发者ID:Sandy4321,项目名称:quagga,代码行数:31,代码来源:test_SequentialMeanPoolingBlock.py
示例9: test_theano_fprop_matrix
def test_theano_fprop_matrix(self):
r = []
for i in xrange(self.N):
max_input_sequence_len = self.rng.random_integers(300)
sequence_len = max_input_sequence_len if i == 0 else self.rng.random_integers(max_input_sequence_len)
embd_dim = self.rng.random_integers(10000)
batch_size = self.rng.random_integers(500)
output_dim = self.rng.random_integers(2000)
W = self.get_orthogonal_matrix(embd_dim, output_dim)
row_idxs = self.rng.randint(embd_dim, size=(batch_size, max_input_sequence_len)).astype(np.int32)
quagga.processor_type = 'gpu'
qrow_idxs = Connector(Matrix.from_npa(row_idxs))
qW = Connector(Matrix.from_npa(W))
row_slicing_block = RowSlicingBlock(qW, qrow_idxs)
qW.fprop()
qrow_idxs.ncols = sequence_len
qrow_idxs.fprop()
row_slicing_block.fprop()
q_output = row_slicing_block.output.to_host()
th_row_idxs = T.imatrix()
row_slicing_layer = RowSlicingLayer(W)
toutput = row_slicing_layer.get_output_expr(th_row_idxs)
th_output = theano.function([th_row_idxs], toutput)(row_idxs)
for i in xrange(sequence_len):
r.append(np.allclose(q_output[i], th_output[i]))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:30,代码来源:test_RowSlicingBlock.py
示例10: test_theano_grad
def test_theano_grad(self):
quagga.processor_type = 'gpu'
r = []
for i in xrange(self.N):
batch_size, dim = self.rng.random_integers(2000, size=2)
y_hat = self.rng.randn(batch_size, dim).astype(dtype=np.float32)
y = self.rng.randn(batch_size, dim).astype(dtype=np.float32)
# Theano model
th_y_hat, th_y = T.fmatrix(), T.fmatrix()
loss = T.mean(T.sum((th_y_hat - th_y) ** 2, axis=1))
get_theano_grads = theano.function([th_y_hat, th_y], T.grad(loss, wrt=th_y_hat))
th_dL_dy_hat = get_theano_grads(y_hat, y)
# quagga model
context = Context()
y_hat_gpu = Connector(Matrix.from_npa(y_hat), context, context)
y_gpu = Connector(Matrix.from_npa(y))
sigmoid_ce_block = SseBlock(y_hat_gpu, y_gpu)
sigmoid_ce_block.fprop()
sigmoid_ce_block.bprop()
q_dL_dy_hat = y_hat_gpu.backward_matrix.to_host()
r.append(np.allclose(th_dL_dy_hat, q_dL_dy_hat))
self.assertEqual(sum(r), self.N)
开发者ID:Sandy4321,项目名称:quagga,代码行数:26,代码来源:test_SseBlock.py
示例11: test_bprop
def test_bprop(self):
"""
compare `bprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
batch_size, dim = self.rng.random_integers(2000, size=2)
y_hat = self.rng.randn(batch_size, dim).astype(dtype=np.float32)
y = self.rng.randn(batch_size, dim).astype(dtype=np.float32)
quagga.processor_type = 'gpu'
context = Context()
y_hat_gpu = Connector(Matrix.from_npa(y_hat), context, context)
y_gpu = Connector(Matrix.from_npa(y))
sse_block = SseBlock(y_hat_gpu, y_gpu)
sse_block.fprop()
sse_block.bprop()
dL_dy_hat_gpu = y_hat_gpu.backward_matrix.to_host()
quagga.processor_type = 'cpu'
context = Context()
y_hat_cpu = Connector(Matrix.from_npa(y_hat), context, context)
y_cpu = Connector(Matrix.from_npa(y))
sse_block = SseBlock(y_hat_cpu, y_cpu)
sse_block.fprop()
sse_block.bprop()
dL_dy_hat_cpu = y_hat_cpu.backward_matrix.to_host()
r.append(np.allclose(dL_dy_hat_gpu, dL_dy_hat_cpu))
self.assertEqual(sum(r), self.N)
开发者ID:Sandy4321,项目名称:quagga,代码行数:31,代码来源:test_SseBlock.py
示例12: test_fprop_matrix
def test_fprop_matrix(self):
"""
compare `fprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
max_input_sequence_len = self.rng.random_integers(300)
sequence_len = max_input_sequence_len if i == 0 else self.rng.random_integers(max_input_sequence_len)
embd_dim = self.rng.random_integers(10000)
batch_size, output_dim = self.rng.random_integers(2000, size=2)
W = self.get_orthogonal_matrix(embd_dim, output_dim)
row_idxs = self.rng.randint(embd_dim, size=(batch_size, max_input_sequence_len)).astype(np.int32)
output = {}
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qrow_idxs = Connector(Matrix.from_npa(row_idxs))
qW = Connector(Matrix.from_npa(W))
row_slicing_block = RowSlicingBlock(qW, qrow_idxs)
qW.fprop()
qrow_idxs.ncols = sequence_len
qrow_idxs.fprop()
row_slicing_block.fprop()
output[processor_type] = row_slicing_block.output.to_host()
for output_gpu, output_cpu in izip(output['gpu'], output['cpu']):
r.append(np.allclose(output_gpu, output_cpu))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:29,代码来源:test_RowSlicingBlock.py
示例13: test_bprop
def test_bprop(self):
"""
compare `fprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
max_input_sequence_len = self.rng.random_integers(500)
sequence_len = max_input_sequence_len if i == 0 else self.rng.random_integers(max_input_sequence_len)
batch_size = self.rng.random_integers(256)
input_dim, hidden_dim = self.rng.random_integers(1500, size=2)
x = [self.rng.randn(batch_size, input_dim).astype(np.float32) for _ in xrange(max_input_sequence_len)]
true_labels = [self.rng.randint(hidden_dim, size=(batch_size, 1)).astype(np.int32) for _ in xrange(max_input_sequence_len)]
W = self.get_orthogonal_matrix(input_dim, hidden_dim)
b = self.rng.rand(1, hidden_dim).astype(np.float32)
device_id = 0
quagga_grads = {}
for reverse in [False, True]:
for with_bias in [False, True]:
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qx = List([Connector(Matrix.from_npa(e), device_id) for e in x])
qtrue_labels = List([Connector(Matrix.from_npa(e)) for e in true_labels], len(qx))
qW = Connector(Matrix.from_npa(W), device_id)
qb = Connector(Matrix.from_npa(b), device_id) if with_bias else None
seq_dot_block = SequencerBlock(block_class=DotBlock,
params=[qW, qb],
sequences=[qx],
output_names=['output'],
reverse=reverse)
seq_sce_block = SequencerBlock(block_class=SoftmaxCeBlock,
params=[],
sequences=[seq_dot_block.output, qtrue_labels],
reverse=reverse)
qx.length = sequence_len
qx.fprop()
qtrue_labels.fprop()
qW.fprop()
if qb:
qb.fprop()
seq_dot_block.fprop()
seq_sce_block.fprop()
seq_sce_block.bprop()
seq_dot_block.bprop()
quagga_grads[processor_type] = [qW.backward_matrix.to_host()]
if with_bias:
quagga_grads[processor_type].append(qb.backward_matrix.to_host())
quagga_grads[processor_type].extend(e.backward_matrix.to_host() for e in qx)
for grad_gpu, grad_cpu in izip(quagga_grads['gpu'], quagga_grads['cpu']):
r.append(np.allclose(grad_gpu, grad_cpu, atol=1e-5))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:54,代码来源:test_SequentialDotBlock.py
示例14: bprop
def bprop(self):
dL_doutput = self.output.backward_matrix
self.dL_dpre_a.assign_dL_dpre_a(self.context, dL_doutput, self.a,
self.matrices[:self.length])
if hasattr(self, 'dL_dmatrices'):
Matrix.add_attention_tile(self.context, dL_doutput, self.a,
self.dL_dpre_a, self.u,
self.dL_dmatrices[:self.length])
if hasattr(self, 'dL_du'):
self.dL_du.add_attention_derivative(self.context, self.dL_dpre_a,
self.matrices[:self.length])
开发者ID:Sandy4321,项目名称:quagga,代码行数:11,代码来源:AttentionBlock.py
示例15: __init__
def __init__(self, dropout_prob, x, seed=42, device_id=None):
self.dropout_prob = dropout_prob
self.f_context = Context(device_id)
device_id = self.f_context.device_id
self.generator = Matrix.get_random_generator(seed)
if x.bpropagable:
self.b_context = Context(device_id)
self.x, self.dL_dx = x.register_usage(device_id, device_id)
else:
self.x = x.register_usage(device_id)
self.output = Matrix.empty_like(self.x)
self.output = Connector(self.output, device_id if x.bpropagable else None)
self.training_mode = True
开发者ID:yiiwood,项目名称:quagga,代码行数:13,代码来源:DropoutBlock.py
示例16: test_bprop
def test_bprop(self):
"""
compare `bprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
batch_size, x_dim, output_dim = self.rng.random_integers(2000, size=3)
x = self.rng.rand(batch_size, x_dim).astype(np.float32)
W = self.get_orthogonal_matrix(x_dim, output_dim)
b = self.rng.rand(1, output_dim).astype(np.float32) if self.rng.randint(2) else None
device_id = 0
state = self.rng.get_state()
quagga.processor_type = 'gpu'
context = Context()
x_gpu = Connector(Matrix.from_npa(x), device_id)
W_gpu = Connector(Matrix.from_npa(W), device_id)
b_gpu = Connector(Matrix.from_npa(b), device_id) if b is not None else b
dot_block_gpu = DotBlock(W_gpu, b_gpu, x_gpu)
x_gpu.fprop()
W_gpu.fprop()
if b_gpu:
b_gpu.fprop()
dot_block_gpu.fprop()
_, dL_doutput = dot_block_gpu.output.register_usage(device_id, device_id)
random_matrix = self.rng.rand(dL_doutput.nrows, dL_doutput.ncols)
dL_doutput.assign(context, Matrix.from_npa(random_matrix, 'float'))
dot_block_gpu.bprop()
if b is not None:
dL_db_gpu = b_gpu.backward_matrix.to_host()
dL_dW_gpu = W_gpu.backward_matrix.to_host()
dL_dx_gpu = x_gpu.backward_matrix.to_host()
self.rng.set_state(state)
quagga.processor_type = 'cpu'
context = Context()
x_cpu = Connector(Matrix.from_npa(x), device_id)
W_cpu = Connector(Matrix.from_npa(W), device_id)
b_cpu = Connector(Matrix.from_npa(b), device_id) if b is not None else b
dot_block_cpu = DotBlock(W_cpu, b_cpu, x_cpu)
x_cpu.fprop()
W_cpu.fprop()
if b_cpu:
b_cpu.fprop()
dot_block_cpu.fprop()
_, dL_doutput = dot_block_cpu.output.register_usage(device_id, device_id)
random_matrix = self.rng.rand(dL_doutput.nrows, dL_doutput.ncols)
dL_doutput.assign(context, Matrix.from_npa(random_matrix, 'float'))
dot_block_cpu.bprop()
if b is not None:
dL_db_cpu = b_cpu.backward_matrix.to_host()
dL_dW_cpu = W_cpu.backward_matrix.to_host()
dL_dx_cpu = x_cpu.backward_matrix.to_host()
r.append(np.allclose(dL_dx_gpu, dL_dx_cpu, atol=1e-5))
r.append(np.allclose(dL_dW_gpu, dL_dW_cpu, atol=1e-5))
if b is not None:
r.append(np.allclose(dL_db_gpu, dL_db_cpu, atol=1e-5))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:60,代码来源:test_DotBlock.py
示例17: test_theano_grad
def test_theano_grad(self):
quagga.processor_type = 'gpu'
r = []
for i in xrange(self.N):
for sparse in [True, False]:
batch_size, dim = self.rng.random_integers(2000, size=2)
if sparse:
true_labels = np.zeros((batch_size, dim), np.float32)
for k, j in enumerate(self.rng.randint(dim, size=batch_size)):
true_labels[k, j] = 1.0
else:
true_labels = self.rng.randint(dim, size=(batch_size, 1)).astype(np.int32)
x = self.rng.randn(batch_size, dim).astype(np.float32)
mask = (self.rng.rand(batch_size, 1) < 0.8).astype(np.float32)
device_id = 0
for with_mask in [False, True]:
# Theano model
th_x = T.fmatrix()
th_mask = T.fcol()
th_true_labels = T.fmatrix() if sparse else T.ivector()
if with_mask:
probs = T.nnet.softmax(th_mask * th_x)
else:
probs = T.nnet.softmax(th_x)
loss = T.mean(T.nnet.categorical_crossentropy(probs, th_true_labels))
if with_mask:
get_theano_grads = theano.function([th_x, th_true_labels, th_mask], T.grad(loss, wrt=th_x))
th_dL_dx = get_theano_grads(x, true_labels if sparse else true_labels[:, 0], mask)
else:
get_theano_grads = theano.function([th_x, th_true_labels], T.grad(loss, wrt=th_x))
th_dL_dx = get_theano_grads(x, true_labels if sparse else true_labels[:, 0])
# quagga model
x_gpu = Connector(Matrix.from_npa(x), device_id)
true_labels_gpu = Connector(Matrix.from_npa(true_labels))
mask_gpu = Connector(Matrix.from_npa(mask)) if with_mask else None
softmax_ce_block = SoftmaxCeBlock(x_gpu, true_labels_gpu, mask_gpu)
x_gpu.fprop()
true_labels_gpu.fprop()
if with_mask:
mask_gpu.fprop()
softmax_ce_block.fprop()
softmax_ce_block.bprop()
q_dL_dx = x_gpu.backward_matrix.to_host()
r.append(np.allclose(th_dL_dx, q_dL_dx))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:48,代码来源:test_SoftmaxCeBlock.py
示例18: test_bprop
def test_bprop(self):
r = []
for i in xrange(self.N):
matrices = []
nrows = self.rng.random_integers(1, 3000)
ncols = [0]
col_slices = []
device_ids = []
for _ in xrange(self.rng.random_integers(1, 10)):
_ncols = self.rng.random_integers(1, 2000)
ncols.append(ncols[-1] + _ncols)
if self.rng.choice([True, False]):
device_ids.append(0)
col_slices.append((ncols[-2], ncols[-1]))
else:
device_ids.append(None)
matrices.append(self.rng.rand(nrows, _ncols).astype(np.float32))
true_labels = self.rng.randint(ncols[-1], size=(nrows, 1)).astype(np.int32)
if not col_slices:
r.append(True)
continue
output = {}
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qmatrices = [Connector(Matrix.from_npa(m), d_id) for m, d_id in izip(matrices, device_ids)]
qtrue_labels = Connector(Matrix.from_npa(true_labels))
hstack_block = HorizontalStackBlock(*qmatrices)
sce_block = SoftmaxCeBlock(hstack_block.output, qtrue_labels)
for m in qmatrices:
m.fprop()
qtrue_labels.fprop()
hstack_block.fprop()
sce_block.fprop()
sce_block.bprop()
hstack_block.bprop()
output[processor_type] = [m.backward_matrix.to_host()
for m in qmatrices if m.bpropagable]
for dL_dm_gpu, dL_dm_cpu in izip(output['gpu'], output['cpu']):
if not np.allclose(dL_dm_gpu, dL_dm_cpu):
r.append(False)
break
else:
r.append(True)
self.assertEqual(sum(r), self.N)
开发者ID:Sandy4321,项目名称:quagga,代码行数:48,代码来源:test_HorizontalStackBlock.py
示例19: test_fprop
def test_fprop(self):
"""
compare `fprop` results for cpu and gpu backends
"""
r = []
for i in xrange(self.N):
max_input_sequence_len = self.rng.random_integers(500)
sequence_len = max_input_sequence_len if i == 0 else self.rng.random_integers(max_input_sequence_len)
batch_size = self.rng.random_integers(256)
input_dim, hidden_dim = self.rng.random_integers(1500, size=2)
x = [self.rng.randn(batch_size, input_dim).astype(np.float32) for _ in xrange(max_input_sequence_len)]
W = self.get_orthogonal_matrix(input_dim, hidden_dim)
b = self.rng.rand(1, hidden_dim).astype(np.float32)
from quagga.cuda import cudart
cudart.cuda_set_device(1)
qoutput = {}
for reverse in [False, True]:
for with_bias in [False, True]:
for processor_type in ['gpu', 'cpu']:
quagga.processor_type = processor_type
qx = List([Connector(Matrix.from_npa(e)) for e in x])
qW = Connector(Matrix.from_npa(W))
qb = Connector(Matrix.from_npa(b)) if with_bias else None
seq_dot_block = SequencerBlock(block_class=DotBlock,
params=[qW, qb],
sequences=[qx],
output_names=['output'],
reverse=reverse)
qx.length = sequence_len
qx.fprop()
qW.fprop()
if qb:
qb.fprop()
seq_dot_block.fprop()
qoutput[processor_type] = seq_dot_block.output.to_host()
for output_gpu, output_cpu in izip(qoutput['gpu'], qoutput['cpu']):
if not np.allclose(output_gpu, output_cpu, atol=1e-5):
r.append(False)
break
else:
r.append(True)
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:47,代码来源:test_SequentialDotBlock.py
示例20: test_theano_grad
def test_theano_grad(self):
quagga.processor_type = 'gpu'
r = []
for i in xrange(self.N):
batch_size, dim = self.rng.random_integers(2000, size=2)
true_labels = self.rng.randint(2, size=(batch_size, dim)).astype(dtype=np.float32)
mask = (self.rng.rand(batch_size, 1) < 0.8).astype(np.float32)
x = self.rng.randn(batch_size, dim).astype(dtype=np.float32)
device_id = 0
for with_mask in [False, True]:
# Theano model
th_x = T.fmatrix()
th_mask = T.fmatrix()
th_true_labels = T.fmatrix()
if with_mask:
probs = T.nnet.sigmoid(theano.compile.ops.Rebroadcast((0, False), (1, True))(th_mask) * th_x)
else:
probs = T.nnet.sigmoid(th_x)
loss = - th_true_labels * T.log(probs) - \
(1.0 - th_true_labels) * T.log(1.0 - probs)
loss = T.sum(loss, axis=1).mean()
if with_mask:
get_theano_grads = theano.function([th_x, th_true_labels, th_mask], T.grad(loss, wrt=th_x))
th_dL_dx = get_theano_grads(x, true_labels, mask)
else:
get_theano_grads = theano.function([th_x, th_true_labels], T.grad(loss, wrt=th_x))
th_dL_dx = get_theano_grads(x, true_labels)
# quagga model
x_gpu = Connector(Matrix.from_npa(x), device_id)
true_labels_gpu = Connector(Matrix.from_npa(true_labels))
mask_gpu = Connector(Matrix.from_npa(mask)) if with_mask else None
sigmoid_ce_block = SigmoidCeBlock(x_gpu, true_labels_gpu, mask_gpu)
x_gpu.fprop()
true_labels_gpu.fprop()
if with_mask:
mask_gpu.fprop()
sigmoid_ce_block.fprop()
sigmoid_ce_block.bprop()
q_dL_dx = x_gpu.backward_matrix.to_host()
r.append(np.allclose(th_dL_dx, q_dL_dx))
self.assertEqual(sum(r), len(r))
开发者ID:Sandy4321,项目名称:quagga,代码行数:46,代码来源:test_SigmoidCeBlock.py
注:本文中的quagga.matrix.Matrix类示例由纯净天空整理自Github/MSDocs等源码及文档管理平台,相关代码片段筛选自各路编程大神贡献的开源项目,源码版权归原作者所有,传播和使用请参考对应项目的License;未经允许,请勿转载。 |
请发表评论