def hybrid_layer(X, size_in, size_out, size_random, dbg_out=[]): assert size_out >= size_random >= 0 out = cgt.sigmoid(nn.Affine( size_in, size_out, name="InnerProd(%d->%d)" % (size_in, size_out) )(X)) dbg_out.append(out) if size_random == 0: return out if size_random == size_out: out_s = cgt.bernoulli(out) return out_s out_s = cgt.bernoulli(out[:, :size_random]) out = cgt.concatenate([out_s, out[:, size_random:]], axis=1) return out
def hybrid_layer(X, size_in, size_out, size_random, dbg_out=[]): assert size_out >= size_random >= 0 out = cgt.sigmoid( nn.Affine(size_in, size_out, name="InnerProd(%d->%d)" % (size_in, size_out))(X)) dbg_out.append(out) if size_random == 0: return out if size_random == size_out: out_s = cgt.bernoulli(out) return out_s out_s = cgt.bernoulli(out[:, :size_random]) out = cgt.concatenate([out_s, out[:, size_random:]], axis=1) return out
def hybrid_network(size_in, size_out, num_units, num_stos, dbg_out={}): assert len(num_units) == len(num_stos) net_in = cgt.matrix("X", fixed_shape=(None, size_in)) prev_num_units, prev_out = size_in, net_in dbg_out['NET~in'] = net_in curr_layer = 1 for (curr_num_units, curr_num_sto) in zip(num_units, num_stos): assert curr_num_units >= curr_num_sto >= 0 prev_out = combo_layer( prev_out, prev_num_units, curr_num_units, (curr_num_sto, ), s_funcs=s_func_ip, o_funcs=(lambda x: cgt.bernoulli(cgt.sigmoid(x)), cgt.nn.rectify), name=str(curr_layer), dbg_out=dbg_out) dbg_out['L%d~out' % curr_layer] = prev_out prev_num_units = curr_num_units curr_layer += 1 net_out = nn.Affine(prev_num_units, size_out, name="InnerProd(%d->%d)" % (prev_num_units, size_out))(prev_out) dbg_out['NET~out'] = net_out return net_in, net_out
def hybrid_network(size_in, size_out, num_units, num_stos, dbg_out={}): assert len(num_units) == len(num_stos) net_in = cgt.matrix("X", fixed_shape=(None, size_in)) prev_num_units, prev_out = size_in, net_in dbg_out['NET~in'] = net_in curr_layer = 1 for (curr_num_units, curr_num_sto) in zip(num_units, num_stos): assert curr_num_units >= curr_num_sto >= 0 prev_out = combo_layer(prev_out, prev_num_units, curr_num_units, (curr_num_sto,), s_funcs=s_func_ip, o_funcs=(lambda x: cgt.bernoulli(cgt.sigmoid(x)), cgt.nn.rectify), name=str(curr_layer), dbg_out=dbg_out) dbg_out['L%d~out' % curr_layer] = prev_out prev_num_units = curr_num_units curr_layer += 1 net_out = nn.Affine(prev_num_units, size_out, name="InnerProd(%d->%d)" % (prev_num_units, size_out) )(prev_out) dbg_out['NET~out'] = net_out return net_in, net_out