Package gnu.trove.map.hash

Examples of gnu.trove.map.hash.TIntIntHashMap


    @Override
    public void clean() {
        TFloatList olddata = data;
        TIntIntMap oldindexer = indexer;
        data = new TFloatArrayList(olddata.size());
        indexer = new TIntIntHashMap(oldindexer.size());

        int pos = 0;
        TIntIntIterator iter = oldindexer.iterator();
        while (iter.hasNext()) {
            iter.advance();
View Full Code Here


    @Override
    public void clean() {
        TFloatList olddata = data;
        TIntIntMap oldindexer = indexer;
        data = new TFloatArrayList(olddata.size());
        indexer = new TIntIntHashMap(oldindexer.size());

        int pos = 0;
        TIntIntIterator iter = oldindexer.iterator();
        while (iter.hasNext()) {
            iter.advance();
View Full Code Here

    if (feature.isStopIncrement()) {
      feature.setStopIncrement(false);
      freeze = true;
    }

    TIntIntHashMap index = new TIntIntHashMap();
    TIntIntIterator it = feature.iterator();
    while (it.hasNext()) {
      it.advance();
      int value = it.key();
      int key = it.value();
      index.put(key, value);
    }
    int[] idx = index.keys();
    Arrays.sort(idx);
    int length = weights.length;
    HashFeatureAlphabet newfeat = new HashFeatureAlphabet();
    cl.getAlphabetFactory().setDefaultFeatureAlphabet(newfeat);
    TFloatArrayList ww = new TFloatArrayList();
    for (int i = 0; i < idx.length; i++) {
      int base = idx[i]; //一个特征段起始位置
      int end; //一个特征段结束位置
      if (i < idx.length - 1)
        end = idx[i + 1]; //对应下一个特征段起始位置
      else
        end  = length; //或者整个结束位置

      int interv = end - base;   //一个特征段长度
      float[] sw = new float[interv];
      for (int j = 0; j < interv; j++) {
        sw[j] = weights[base+j];
      }
      float var = MyArrays.viarance(sw);
      if (var>varsthresh) {
        int str = index.get(base);
        int id = newfeat.lookupIndex(str, interv);
        for (int j = 0; j < interv; j++) {
          ww.insert(id + j, weights[base + j]);
        }
      }else{
        //        System.out.print("."); 
      }

    }
    newfeat.setStopIncrement(freeze);
    cl.setWeights(ww.toArray());
    index.clear();
    ww.clear();
  }
View Full Code Here

          }else{
            ids = b;
            idl=a;
          }         
          if(similarityMap[ids] == null)
            similarityMap[ids] = new TIntIntHashMap();
          synchronized (similarityMap[ids]) {           
            similarityMap[ids].adjustOrPutValue(idl, 1, 1);
          }

        }
View Full Code Here

    int loss = 0;

    int L = data.length;
    // 稀疏矩阵表示(f(x,y)-f(x,\bar{y}))
    TIntIntHashMap diffF = new TIntIntHashMap(); // 最多有2*L*numTemplets个不同

    for (int o = -templets.maxOrder - 1, l = 0; l < L; o++, l++) {
      tS = tS * numLabels % templets.numStates + target[l]; // 目标值:计算当前状态组合的y空间偏移
      pS = pS * numLabels % templets.numStates + predict[l];// 预测值:计算当前状态组合的y空间偏移
      if (predict[l] != target[l])
        ne++;
      if (o >= 0 && (predict[o] != target[o]))
        ne--; // 减去移出clique的节点的label差异

      if (ne > 0) { // 当前clique有不相同label
        loss++; // L(y,ybar)
        for (int t = 0; t < numTemplets; t++) {
          if (data[l][t] == -1)
            continue;
          int tI = data[l][t] + templets.offset[t][tS]; // 特征索引:找到对应weights的维数
          int pI = data[l][t] + templets.offset[t][pS]; // 特征索引:找到对应weights的维数
          if (tI != pI) {
            diffF.adjustOrPutValue(tI, 1, 1);
            diffF.adjustOrPutValue(pI, -1, -1);
            diffW += weights[tI] - weights[pI]; // w^T(f(x,y)-f(x,ybar))
          }
        }
      }
    }

    float diff = 0;
    TIntIntIterator it = diffF.iterator();
    for (int i = diffF.size(); i-- > 0;) {
      it.advance();
      diff += it.value() * it.value();
    }
    it = null;
    float alpha;
    float delta;
    if (useLoss) {
      delta = loss;
    } else
      delta = 1;
    if (diffW < delta) {

      tS = 0;
      pS = 0;
      ne = 0;
      alpha = (delta - diffW) / diff;
      // System.out.println(alpha);
      alpha = Math.min(c, alpha);
      it = diffF.iterator();
      for (int i = diffF.size(); i-- > 0;) {
        it.advance();
        weights[it.key()] += it.value() * alpha;
      }

      return loss;
View Full Code Here

     * 最后一个特征的位置
     */
    private int last;

    public HashFeatureAlphabet() {
        intdata = new TIntIntHashMap(DEFAULT_CAPACITY,DEFAULT_LOAD_FACTOR,noEntryValue,noEntryValue);
        frozen = false;
        last = 0;
    }
View Full Code Here

            raw_map.put( keys[i], vals[i] );
        }
        Map<Integer,Long> map = TDecorators.wrap( raw_map );
        assertEquals( map, map );

        TIntIntMap raw_int_map = new TIntIntHashMap();
        for ( int i = 0; i < keys.length; i++ ) {
            raw_int_map.put( keys[i], (int) vals[i] );
        }
        Map<Integer,Integer> int_map = TDecorators.wrap( raw_int_map );
        assertFalse( map.equals( int_map ) );

        // Change a value..
View Full Code Here

*/
public class TByteTripleIntHashMap {
  private TIntIntHashMap map;

  public TByteTripleIntHashMap() {
    map = new TIntIntHashMap(100);
  }
View Full Code Here

  public TByteTripleIntHashMap() {
    map = new TIntIntHashMap(100);
  }

  public TByteTripleIntHashMap(int capacity) {
    map = new TIntIntHashMap(capacity);
  }
View Full Code Here

*/
public class TByteShortByteKeyedIntHashMap extends TByteShortByteKeyedMap {
  private TIntIntHashMap map;

  public TByteShortByteKeyedIntHashMap() {
    map = new TIntIntHashMap(100);
  }
View Full Code Here

TOP

Related Classes of gnu.trove.map.hash.TIntIntHashMap

Copyright © 2018 www.massapicom. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.