Bạn có thể sử dụng tf.py_func
để gọi hàm python. Các hoạt động bên trong chức năng cũng có thể trên GPU. Ví dụ, chúng ta có thể thêm Op và gradient của nó hoàn toàn bằng python gọi Caffè trên GPU:
def custom_loss_impl(x):
caffe.set_mode_gpu()
caffe.set_device(0)
...
return np.float32(loss)
def custom_loss(x):
tf.RegisterGradient("custom_loss_grad")(custom_loss_grad)
g=tf.get_default_graph()
with g.gradient_override_map({"PyFunc":"custom_loss_grad"}):
return tf.py_func(custom_loss_impl,[x],[tf.float32])[0]
def custom_loss_grad_impl(x):
caffe.set_mode_gpu()
caffe.set_device(0)
custom_loss_impl(x)
...
return np.float32(gradient)
def custom_loss_grad(op,grad):
x=op.inputs[0]
return tf.py_func(custom_loss_grad_impl,[x],[tf.float32])#assume grad=1
Nguồn
2016-10-22 00:19:46
Làm cách nào để thực hiện thao tác trên GPU? Tôi có phải triển khai phiên bản GPU này trên C++ không? Có cách nào để viết mã bằng Python không? –
Tôi không nghĩ có cách viết hoạt động GPU bằng Python. Bạn luôn có thể thử mở một câu hỏi khác với việc triển khai bạn có trong đầu và một người nào đó có thể sẽ đưa ra ý tưởng để thực hiện nó trực tiếp trong TensorFlow. –