Khi tôi đọc tệp với tf.read_file
Tôi nhận được thứ gì đó với loại tf.string
. Tài liệu chỉ nói rằng nó là "mảng byte có độ dài thay đổi. Mỗi phần tử của một Tensor là một mảng byte." (https://www.tensorflow.org/versions/r0.10/resources/dims_types.html). Tôi không có ý tưởng làm thế nào để giải thích điều này.TensorFlow strings: chúng là gì và cách làm việc với chúng
Tôi không thể làm gì với loại này. Trong python thông thường, bạn có thể lấy các phần tử theo chỉ mục như my_string[:4]
, nhưng khi tôi chạy mã sau, tôi nhận được một lỗi.
import tensorflow as tf
import numpy as np
x = tf.constant("This is string")
y = x[:4]
init = tf.initialize_all_variables()
sess = tf.Session()
sess.run(init)
result = sess.run(y)
print result
Nó nói
File "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/tensor_shape.py", line 621, in assert_has_rank raise ValueError("Shape %s must have rank %d" % (self, rank)) ValueError: Shape() must have rank 1
Ngoài ra tôi không thể chuyển đổi chuỗi của tôi để tf.float32
tensor. Nó là .flo
tệp và nó có tiêu đề ma thuật "PIEH". Mã thành công này chuyển đổi tiêu đề thành số (xem ví dụ ở đây https://stackoverflow.com/a/28016469/4744283) nhưng tôi không thể làm điều đó với lưu lượng tensorflow. Tôi đã thử tf.string_to_number(string, out_type=tf.float32)
nhưng nó cho biết
tensorflow.python.framework.errors.InvalidArgumentError: StringToNumberOp could not correctly convert string: PIEH
Vì vậy, chuỗi là gì? Hình dạng của nó là gì? Làm thế nào tôi có thể ít nhất nhận được một phần của chuỗi? Tôi cho rằng nếu tôi có thể tham gia, tôi có thể bỏ qua phần "PIEH".
UPD: Tôi quên nói rằng tf.slice(string, [0], [4])
cũng không hoạt động với cùng một lỗi.
BTW, bạn có thể nhận danh sách các tùy chọn chấp nhận các loại dữ liệu chuỗi sử dụng tập lệnh này: https: // gist .github.com/yaroslavvb/16bb81fcfb0932169087add47ecb8c3a –
Cảm ơn bạn đã trả lời! Tập lệnh này có dành cho phiên bản TF cụ thể không? Nó không hoạt động ít nhất là 0,9. Sẽ cố gắng cập nhật lên 0,10. – ckorzhik
Không, nó cũng không hoạt động cho 0.10 '' '$ python list_ops.py Traceback (cuộc gọi gần đây nhất): Tệp" list_ops.py ", dòng 23, trong nếu arg.type == tf .string: Tệp "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/dtypes.py", dòng 244, trong __eq__ và self._type_enum == as_dtype (khác) .as_datatype_enum) Tệp "/usr/local/lib/python2.7/dist-packages/tensorflow/python/framework/dtypes.py", dòng 532, trong as_dtype nếu khóa == type_value: LoạiError: loại dữ liệu không được hiểu '' ' Bạn có thể giúp tôi khắc phục sự cố không? –
ckorzhik