当我读取文件时,tf.read_file我得到了类型的东西tf.string.文档只说它是"可变长度字节数组.Tensor的每个元素都是一个字节数组." (https://www.tensorflow.org/versions/r0.10/resources/dims_types.html).我不知道如何解释这个.
我对这种类型无能为力.在通常的python中你可以通过索引获取元素my_string[:4],但是当我运行以下代码时,我得到一个错误.
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
Run Code Online (Sandbox Code Playgroud)
它说
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
我也无法将我的字符串转换为tf.float32张量.它是.flo文件,它有魔术标题"PIEH".这个numpy代码成功地将这样的头转换为数字(参见这里的例子/sf/answers/1961152861/)但我不能用tensorflow做到这一点.我试过tf.string_to_number(string, out_type=tf.float32)但它说
tensorflow.python.framework.errors.InvalidArgumentError: StringToNumberOp could not correctly convert string: …
我正在尝试使用rapidjson.
我想生成字符串并将其添加到rapidjson::Value对象的一些.
我在使用qjson时使用的是std :: string,但是对于rapidjson,这似乎是不合适的.我不想生成字符串然后复制它,字符串对象的生命周期在object(rapidjson::Value)生存期之前结束(因此generated_string.c_str()不是这种情况).在json中可能有\ 0,因此,char*以null结尾的字符串也不是解决方案.
那么,我必须编写自己的字符串类型?或者使用类似的东西
auto create_string_object() -> rapidjson::GenericStringRef<char>
{
size_t len;
char* result;
// generate char* result with length len
const char* return_value = result;
return rapidjson::StringRef(return_value,len);
}
auto create_object_object(rapidjson::Document::AllocatorType &allocator) -> rapidjson::Value
{
// ...
rapidjson::Value result(rapidjson::kObjectType);
rapidjson::Value tmp; // tmp = create_string_object() will not compile
tmp = create_string_object();
result.AddMember("key", tmp, allocator);
// ...
}
Run Code Online (Sandbox Code Playgroud)
或者还有一些其他方法可以使用字符串?这对我来说似乎很难.我们不能将字符串移动到rapidjson::Value因为里面的结构不同Value,我们无法在其中设置指针Value,c_str()因为字符串将被销毁Value.即使GenericStringRef<char>我必须用字符串重写几乎所有的工作. …
我想找到最多几个图像:将它们加载到一个数组中并沿第一维找到最大值。
Python代码例如:
import cv2
import sys
import numpy as np
imgs_paths = sys.argv[1:]
imgs = list(map(cv2.imread, imgs_paths))
imgs_arr = np.array(imgs, dtype=np.float32)
imgs_max = np.max(imgs_arr, 0)
Run Code Online (Sandbox Code Playgroud)
我所做的是以下内容:
using Colors, Images
function im_to_array(im)
img_array = permutedims(channelview(im), (2,3,1))
img_array = Float32.(img_array)
return img_array
end
imgs = map(Images.load, imgs_paths)
imgs_arr = map(im_to_array, imgs)
a = imgs_arr
b = reshape(cat(a..., dims=1), tuple(length(a), size(a[1])...))
imgs_max = maximum(b, dims=1)
Run Code Online (Sandbox Code Playgroud)
但它很丑。
我找到了更简单的方法来获得最大值(代码如下),但它的性能很糟糕。可能不是我所期望的。
function im_to_array(im)
img_array = permutedims(channelview(im), (2,3,1))
img_array = Float32.(img_array)
return img_array
end
imgs = map(Images.load, imgs_paths) …Run Code Online (Sandbox Code Playgroud)