1. 12 4月, 2016 8 次提交
  2. 11 4月, 2016 5 次提交
    • A
      Clarifies some documentation in server_lib.py · 6a4b2502
      A. Unique TensorFlower 提交于
      Change: 119533248
      6a4b2502
    • A
      tensorflow: support usage of eigen thread pool · 017498bc
      A. Unique TensorFlower 提交于
      Use eigen ThreadPool instead of tensorflow one if TENSORFLOW_USE_EIGEN_THREADPOOL is defined. This will allow to switch to the new non-blocking ThreadPool.
      Change: 119512280
      017498bc
    • E
      Fix RNN performance bug. + Additions to rnn benchmarks & benchmarks.py. · eb161ecd
      Eugene Brevdo 提交于
      The RNN performance bug:
      * When passing sequence_length to rnn(), calculations were being performed past
        max_sequence_length.
      
      This bug had one major side effect:
      * It slowed down the calculation past max_sequence_length (it *should*
      return zeros for outputs and copy state through)
      
      The calculations themselves were still correct:  The state was still
      copied through and the output was still all zeros.  But that calculation
      was performed via a vector-conditional select() instead of a single
      scalar cond().  As a result a lot of extra copying was happening both
      in fw and backprop.
      
      Thanks to Nat Roth (natusroth@gmail) for unearthing this bug.
      
      **************
      Also:
      - updates to benchmarks.py (allow more specific benchmarks, added
        support for --benchmarks=all).
      - cleaned up RNN benchmarks code a bit.
      
      New and updated benchmarks:
      
      Calculation: Static Unroll with Halved Sequence Length vs. Half Static Unroll
      batch    full_t          units   gpu     dt(half_seq_len)        dt(unroll_half)         dt(half_seq_len)/dt(unroll_half)
      128      50              256     False   0.164351                0.155019                1.060204
      128      50              256     True    0.033295                0.028203                1.180550
      
      Calculation: Static Unroll with Dynamic Flow LSTM vs. Dynamic Unroll LSTM
      batch    max_t   units   gpu     dt(static)      dt(dynamic)     dt(dynamic)/dt(static)
      256      50      512     False   1.759111        1.692570        0.962173
      256      50      512     True    0.178953        0.190454        1.064269
      256      50      256     False   0.533132        0.567228        1.063955
      256      50      256     True    0.078298        0.085024        1.085905
      256      50      128     False   0.220362        0.215350        0.977255
      256      50      128     True    0.053379        0.059129        1.107723
      Change: 119495675
      eb161ecd
    • Y
      Surface control_flow_ops.while_loop to public. · 918e9647
      Yuan Yu 提交于
      Deprecated control_flow_ops.While. Use tf.while_loop.
      Change: 119488170
      918e9647
    • Y
      This is another step to make TensorFlow more interactive and flexible to... · 098f930d
      Yuan Yu 提交于
      This is another step to make TensorFlow more interactive and flexible to users. It allows a tensor produced by a run call to stay "in-place" so that a future run call can use it in-place. To achieve this, a run call can now return a handle of a tensor to the client, which can then be fed to a subsequent run call. This feature is complimentary to partial run, though there are some overlaps.
      
      Here are a few properties of the current implementation:
      
      1. Tensors are stored in the state of a session. The tensors are garbage collected if the client doesn't have a reference to the tensor or the session is closed.
      
      2. There is no change to the current session API. We introduced two ops to manage the conversions between tensors and its handles. (There is a third op to garbage collect a tensor.) See the example below.
      
      3. It fits quite well into the current feed-fetch design/implementation. It tries to reuse the graph (and caches) as much as possible so to make things efficient.
      
      Below is a simple example. More examples can be found in sessopn_ops_test.py.
      
      # Return a handle.
      a = tf.constant(10)
      b = tf.constant(5)
      c = tf.mul(a, b)
      h = tf.get_session_handle(c).eval()
      
      # Feed a tensor handle.
      f, x = tf.get_session_tensor(dtypes.int32)
      y = tf.mul(x, 10)
      result = sess.run(y, feed_dict={f: h.handle})
      # result == 500
      Change: 119481352
      098f930d
  3. 10 4月, 2016 1 次提交
  4. 09 4月, 2016 26 次提交