2017-08-16 397 views
0
  1. 我很好奇模型並行性,並且我從Yaroslav Bulatov讀取了代碼。在這個例子中,我們應該將我們的模型(或稱爲Graph的張量流)手動劃分到不同的分區(left_network & right_network)。 所以,我想知道是否需要手動分區,simple_placer.ccgraph_partition.cc對整個圖表做了什麼?我仍然不清楚。Tensorflow如何轉儲結果放置算法

  2. 在我的思想(讓我知道如果anythong錯誤): 如果有圖有8個分區(子),它可以被看作是8組的工作,和4名工人,如何分配給工人的分區可以通過這樣做:通過tf.device()

    • 明確的註釋,或
    • 分佈式訓練,tf.train.replica_device_setter()

      份額跨越參數服務器變量,否則穿上所有 OPS工作人員設備

但如何年代圖形使分區? 我想跟蹤什麼是子圖(op節點集)看起來像? 我可以轉儲結果或我需要跟蹤/修改哪個代碼文件?

如果有任何概念錯誤或模糊,請讓我知道。 我是這些的新手,任何意見表示讚賞。

  • 在下面的代碼,是一matmul運算節點,這將是分割成不同 工作嗎?

    y_ = tf.placeholder(tf.float32, [None, 10]) 
    x = tf.placeholder(tf.float32, [None, 784]) 
    W = tf.Variable(tf.zeros([784, 10])) 
    b = tf.Variable(tf.zeros([10])) 
    y = tf.matmul(x, W) + b 
    
  • 回答

    0

    你可以通過額外的選項,當你調用tf.Session.run()

    # ... 
    y = tf.matmul(x, W) + b 
    
    sess = tf.Session() 
    options = tf.RunOptions(output_partition_graphs=True) 
    metadata = tf.RunMetadata() 
    
    sess.run(y, options=options, run_metadata=metadata) 
    
    # `metadata` now contains information about what happened during the `run()` call. 
    for partition in metadata.partition_graphs: 
    
        # `partition` is a `tf.GraphDef` representing all the nodes that ran on a single 
        # device. All nodes in `partition` have the same `device` value. 
        device = partition.node[0].device 
    
        for node in partition.node: 
        # e.g. print each node or store it in a dictionary for further analysis. 
        # ... 
    
    得到安置算法的結果