現在、以下の環境でtensorflowを実行することを考えております。
- Ubuntu16.04
- GPU GeForce 1070Ti
- cuda 9.0
- cudnn v7.1.1 Library for Linux
- Python3.5(Anaconda)
- tensorflow 1.6.0
基本的な環境構築は、
- https://qiita.com/mitsuharu_e/items/ecff16bdbcb795a86433
- https://www.tensorflow.org/install/install_linux#InstallingAnaconda
を元に行いました。
ところが、いざtensorflowのサンプルコードを走らせてみると、InvalidArgumentError
というエラーが出てしまいます。
以下、実際に走らせたコードとエラーの詳細です。
https://qiita.com/supersaiakujin/items/aa598c942c3ec82d0c8c
を参考に、
python
1import tensorflow as tf 2import numpy as np 3 4WW = np.array([[0.1, 0.6, -0.9], 5 [0.2, 0.5, -0.8], 6 [0.3, 0.4, -0.7], 7 [0.4, 0.3, -0.6], 8 [0.5, 0.2, -0.5]]).astype(np.float32) 9bb = np.array([0.3, 0.4, 0.5]).astype(np.float32) 10x_data = np.random.rand(100,5).astype(np.float32) 11y_data = np.dot(x_data, WW) + bb 12 13with tf.Session() as sess: 14 15 W = tf.Variable(tf.random_uniform([5,3], -1.0, 1.0)) 16 # The zeros set to zero with all elements. 17 b = tf.Variable(tf.zeros([3])) 18 #y = W * x_data + b 19 y = tf.matmul(x_data, W) + b 20 21 # Add summary ops to collect data 22 w_hist = tf.histogram_summary("weights", W) 23 b_hist = tf.histogram_summary("biases", b) 24 y_hist = tf.histogram_summary("y", y) 25 26 # Minimize the mean squared errors. 27 loss = tf.reduce_mean(tf.square(y - y_data)) 28 # Outputs a Summary protocol buffer with scalar values 29 loss_summary = tf.scalar_summary("loss", loss) 30 31 # Gradient descent algorithm 32 optimizer = tf.train.GradientDescentOptimizer(0.5) 33 train = optimizer.minimize(loss) 34 35 # Before starting, initialize the variables. We will 'run' this first. 36 init = tf.initialize_all_variables() 37 38 # Creates a SummaryWriter 39 # Merges all summaries collected in the default graph 40 merged = tf.merge_all_summaries() 41 writer = tf.train.SummaryWriter("/tmp/tensorflow_log", sess.graph_def) 42 sess.run(init) 43 44 # Fit the line 45 for step in xrange(501): 46 if step % 10 == 0: 47 result = sess.run([merged, loss]) 48 summary_str = result[0] 49 acc = result[1] 50 writer.add_summary(summary_str, step) 51 print"step = %s acc = %s W = %s b = %s" % (step, acc, sess.run(W), sess.run(b)) 52 else: 53 sess.run(train)
このコードを実行した際のエラーメッセージは以下です。
WARNING:tensorflow:From /home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/util/tf_should_use.py:118: initialize_all_variables (from tensorflow.python.ops.variables) is deprecated and will be removed after 2017-03-02. Instructions for updating: Use `tf.global_variables_initializer` instead. WARNING:tensorflow:Passing a `GraphDef` to the SummaryWriter is deprecated. Pass a `Graph` object instead, such as `sess.graph`. Traceback (most recent call last): File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1361, in _do_call return fn(*args) File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1332, in _run_fn self._extend_graph() File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1392, in _extend_graph graph_def.SerializeToString(), status) File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 516, in __exit__ c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'MatMul_1': Operation was explicitly assigned to /device:GPU:2 but available devices are [ /job:localhost/replica:0/task:0/device:CPU:0, /job:localhost/replica:0/task:0/device:GPU:0 ]. Make sure the device specification refers to a valid device. [[Node: MatMul_1 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/device:GPU:2"](a_1, b_1)]]
どうやら、インポートは上手くいっているのですが、実際にtensorflowを用いてコードを実行しようとなると、エラーを吐いてしまうようです。
また別のサンプルプログラム(https://www.tensorflow.org/programmers_guide/using_gpu)
python
1# Creates a graph. 2a = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[2, 3], name='a') 3b = tf.constant([1.0, 2.0, 3.0, 4.0, 5.0, 6.0], shape=[3, 2], name='b') 4c = tf.matmul(a, b) 5# Creates a session with log_device_placement set to True. 6sess = tf.Session(config=tf.ConfigProto(log_device_placement=True)) 7# Runs the op. 8print(sess.run(c))
を実行した際にも、同様のエラーを吐きました。
Traceback (most recent call last): File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1361, in _do_call return fn(*args) File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1332, in _run_fn self._extend_graph() File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/client/session.py", line 1392, in _extend_graph graph_def.SerializeToString(), status) File "/home/username/anaconda3/envs/tensorflow/lib/python3.5/site-packages/tensorflow/python/framework/errors_impl.py", line 516, in __exit__ c_api.TF_GetCode(self.status.status)) tensorflow.python.framework.errors_impl.InvalidArgumentError: Cannot assign a device for operation 'MatMul_1': Operation was explicitly assigned to /device:GPU:2 but available devices are [ /job:localhost/replica:0/task:0/device:CPU:0, /job:localhost/replica:0/task:0/device:GPU:0 ]. Make sure the device specification refers to a valid device. [[Node: MatMul_1 = MatMul[T=DT_FLOAT, transpose_a=false, transpose_b=false, _device="/device:GPU:2"](a_1, b_1)]]
何が問題で、どのようにすれば解決できるのか、どなたかご教授いただけないでしょうか。
よろしくお願いいたします。

回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2018/03/04 04:34 編集
2018/03/04 05:20 編集
2018/03/04 05:34