ThinkChat2.0新版上线,更智能更精彩,支持会话、画图、阅读、搜索等,送10W Token,即刻开启你的AI之旅 广告
# 将图节点放置在特定的计算设备上 让我们通过定义配置对象来启用变量放置的记录,将`log_device_placement`属性设置为`true`,然后将此`config`对象传递给会话,如下所示: ```py tf.reset_default_graph() # Define model parameters w = tf.Variable([.3], tf.float32) b = tf.Variable([-.3], tf.float32) # Define model input and output x = tf.placeholder(tf.float32) y = w * x + b config = tf.ConfigProto() config.log_device_placement=True with tf.Session(config=config) as tfs: # initialize and print the variable y tfs.run(global_variables_initializer()) print('output',tfs.run(y,{x:[1,2,3,4]})) ``` 我们在 Jupyter Notebook 控制台中获得以下输出: ```py b: (VariableV2): /job:localhost/replica:0/task:0/device:GPU:0 b/read: (Identity): /job:localhost/replica:0/task:0/device:GPU:0 b/Assign: (Assign): /job:localhost/replica:0/task:0/device:GPU:0 w: (VariableV2): /job:localhost/replica:0/task:0/device:GPU:0 w/read: (Identity): /job:localhost/replica:0/task:0/device:GPU:0 mul: (Mul): /job:localhost/replica:0/task:0/device:GPU:0 add: (Add): /job:localhost/replica:0/task:0/device:GPU:0 w/Assign: (Assign): /job:localhost/replica:0/task:0/device:GPU:0 init: (NoOp): /job:localhost/replica:0/task:0/device:GPU:0 x: (Placeholder): /job:localhost/replica:0/task:0/device:GPU:0 b/initial_value: (Const): /job:localhost/replica:0/task:0/device:GPU:0 Const_1: (Const): /job:localhost/replica:0/task:0/device:GPU:0 w/initial_value: (Const): /job:localhost/replica:0/task:0/device:GPU:0 Const: (Const): /job:localhost/replica:0/task:0/device:GPU:0 ``` 因此,默认情况下,TensorFlow 会在设备上创建变量和操作节点,从而获得最高表现。 可以使用 `tf.device()` 函数将变量和操作放在特定设备上。让我们把图放在 CPU 上: ```py tf.reset_default_graph() with tf.device('/device:CPU:0'): # Define model parameters w = tf.get_variable(name='w',initializer=[.3], dtype=tf.float32) b = tf.get_variable(name='b',initializer=[-.3], dtype=tf.float32) # Define model input and output x = tf.placeholder(name='x',dtype=tf.float32) y = w * x + b config = tf.ConfigProto() config.log_device_placement=True with tf.Session(config=config) as tfs: # initialize and print the variable y tfs.run(tf.global_variables_initializer()) print('output',tfs.run(y,{x:[1,2,3,4]})) ``` 在 Jupyter 控制台中,我们看到现在变量已经放在 CPU 上,并且执行也发生在 CPU 上: ```py b: (VariableV2): /job:localhost/replica:0/task:0/device:CPU:0 b/read: (Identity): /job:localhost/replica:0/task:0/device:CPU:0 b/Assign: (Assign): /job:localhost/replica:0/task:0/device:CPU:0 w: (VariableV2): /job:localhost/replica:0/task:0/device:CPU:0 w/read: (Identity): /job:localhost/replica:0/task:0/device:CPU:0 mul: (Mul): /job:localhost/replica:0/task:0/device:CPU:0 add: (Add): /job:localhost/replica:0/task:0/device:CPU:0 w/Assign: (Assign): /job:localhost/replica:0/task:0/device:CPU:0 init: (NoOp): /job:localhost/replica:0/task:0/device:CPU:0 x: (Placeholder): /job:localhost/replica:0/task:0/device:CPU:0 b/initial_value: (Const): /job:localhost/replica:0/task:0/device:CPU:0 Const_1: (Const): /job:localhost/replica:0/task:0/device:CPU:0 w/initial_value: (Const): /job:localhost/replica:0/task:0/device:CPU:0 Const: (Const): /job:localhost/replica:0/task:0/device:CPU:0 ```