def lstm_network_t(size_in, size_out, num_units, num_mems, dbg_out={}): def s_func_lstm(_in, _s_in, _s_out, name=''): c_prev = cgt.matrix(fixed_shape=(None, _s_out)) h_prev = cgt.matrix(fixed_shape=(None, _s_out)) c_cur, h_cur = lstm_block(h_prev, c_prev, _in, _s_in, _s_out, name) net_c_prev.append(c_prev) net_h_prev.append(h_prev) net_c_curr.append(c_cur) net_h_curr.append(h_cur) return h_cur assert len(num_units) == len(num_mems) net_c_prev, net_h_prev, net_c_curr, net_h_curr = [], [], [], [] net_in = cgt.matrix(fixed_shape=(None, size_in)) prev_num_units, prev_out = size_in, net_in curr_layer = 1 for curr_num_units, curr_num_mem in zip(num_units, num_mems): assert curr_num_units >= curr_num_mem >= 0 prev_out = combo_layer( prev_out, prev_num_units, curr_num_units, (curr_num_mem,), s_funcs=(s_func_lstm, s_func_ip), o_funcs=(None, cgt.sigmoid), 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="Out")(prev_out) dbg_out['NET~out'] = net_out return net_in, net_out, net_c_prev, net_h_prev, net_c_curr, net_h_curr
def lstm_network_t(size_in, size_out, num_units, num_mems, dbg_out={}): def s_func_lstm(_in, _s_in, _s_out, name=''): c_prev = cgt.matrix(fixed_shape=(None, _s_out)) h_prev = cgt.matrix(fixed_shape=(None, _s_out)) c_cur, h_cur = lstm_block(h_prev, c_prev, _in, _s_in, _s_out, name) net_c_prev.append(c_prev) net_h_prev.append(h_prev) net_c_curr.append(c_cur) net_h_curr.append(h_cur) return h_cur assert len(num_units) == len(num_mems) net_c_prev, net_h_prev, net_c_curr, net_h_curr = [], [], [], [] net_in = cgt.matrix(fixed_shape=(None, size_in)) prev_num_units, prev_out = size_in, net_in curr_layer = 1 for curr_num_units, curr_num_mem in zip(num_units, num_mems): assert curr_num_units >= curr_num_mem >= 0 prev_out = combo_layer(prev_out, prev_num_units, curr_num_units, (curr_num_mem, ), s_funcs=(s_func_lstm, s_func_ip), o_funcs=(None, cgt.sigmoid), 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="Out")(prev_out) dbg_out['NET~out'] = net_out return net_in, net_out, net_c_prev, net_h_prev, net_c_curr, net_h_curr
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