我导入了这个程序,它解析了很多复杂的文本,用C语言编写.我自己的项目是用C++编写的.
我实际上打算,每当解析器算法找到其中一个键标签时,我的类中的一个(很多)构造函数应该被调用,这样我就可以在txt的末尾有一个很好的结构,如解析过程的结果.
这里的问题:我学会了OOP Java和开始C++这个项目,所以我需要一点点的帮助:我怎么能调用C++构造出我的基于C的解析器的文件?我已经检查了互联网,但要么这个问题太琐碎了,要么我的预期解决方案无效;)
谢谢你的任何建议.
对于我的图像处理算法,我使用的是python/OpenCV.我的算法输出应该在同一个窗口一遍又一遍地更新.
然而,有时窗口冻结并且根本不更新,但算法仍在运行并且同时多次更新图片.在这台Ubuntu机器上,窗口变成深灰色.
以下是相关代码的摘录:
for i in range(0,1000):
img = loadNextImg()
procImg = processImg(img)
cv2.imshow("The result", procImg)
cv2.waitKey(1)
Run Code Online (Sandbox Code Playgroud)
注意:processImg()程序大约需要1-2秒.该行在cv2.imshow(procImg)第一个实例中创建窗口(即没有先前的调用)
我有一个受过训练的模型的冻结图,它有一个tf.placeholder我总是提供相同的值.
我想知道是否有可能替换它tf.constant.如果它是某种方式 - 任何例子将不胜感激!
编辑:以下是代码的外观,以帮助可视化问题
我正在使用预先训练的(由其他人)模型进行推理.模型在本地存储为具有.pb扩展名的冻结图形文件.
代码如下所示:
# load graph
graph = load_graph('frozen.pb')
session = tf.Session(graph=graph)
# Get input and output tensors
images_placeholder = graph.get_tensor_by_name("input:0")
output = graph.get_tensor_by_name("output:0")
phase_train_placeholder = graph.get_tensor_by_name("phase_train:0")
feed_dict = {images_placeholder: images, phase_train_placeholder: False}
result = session.run(output, feed_dict=feed_dict)
Run Code Online (Sandbox Code Playgroud)
问题是我总是phase_train_placeholder: False以我的目的为食,所以我想知道是否有可能消除占位符并用类似的东西替换它tf.constant(False, dtype=bool, shape=[])
请帮忙。我遇到很多错误。
sub2.cpp:在函数'int main()'中:sub2.cpp:11:14:错误:从'const char *'到'char'的无效转换[-fpermissive] sub2.cpp:12:14:错误:无效从'const char *'到'char'的转换[-fpermissive] sub2.cpp:16:17:错误:'const'之前的预期主表达式sub2.cpp:16:36:错误:'const之前的预期的主表达式'sub2.cpp:11:6:警告:未使用的变量'外部'[-Wunused变量] sub2.cpp:12:6:警告:未使用的变量'内部'[-Wunused变量] make:* [sub2]错误1个
#include <iostream>
#include <string>
#include <cstring>
using namespace std;
char *Subtract(const char *outer, const char *inner);
int main()
{
char outer = "Bookkepper";
char inner = "keep";
char *word = new char[50];
word = Subtract(const char &outer, const char &inner);
cout << word << endl;
return 0;
}
char *Subtract(const char *outer, const char *inner)
{
int olen = strlen(outer);
int first_occ_idx = -1;
for(int i=0; i …Run Code Online (Sandbox Code Playgroud) TensorFlow正在使用分配我的所有GPU内存并忽略我的命令来使用CPU,我该如何解决这个问题呢?
这是我的代码摘录 testprog
Session *session;
SessionOptions opts = SessionOptions();
//force to allocate 0 memory on gpu
opts.config.mutable_gpu_options()->set_per_process_gpu_memory_fraction(0);
opts.config.mutable_gpu_options()->set_allow_growth(false);
//create session with these settings
TF_CHECK_OK(NewSession(opts, &session));
TF_CHECK_OK(session->Create(graph_def));
//set device to cpu
graph::SetDefaultDevice("/cpu:0", &graph_def);
//run arbitrary model
Status status = session->Run(classifierInput, {output_layer},{},&outputs);
TF_CHECK_OK(session->Close());
Run Code Online (Sandbox Code Playgroud)
打电话nvidi-smi告诉我:
+-----------------------------------------------------------------------------+
| NVIDIA-SMI 375.66 Driver Version: 375.66 |
|-------------------------------+----------------------+----------------------+
| GPU Name Persistence-M| Bus-Id Disp.A | Volatile Uncorr. ECC |
| Fan Temp Perf Pwr:Usage/Cap| Memory-Usage | GPU-Util Compute M. |
|===============================+======================+======================|
| 0 Quadro P4000 …Run Code Online (Sandbox Code Playgroud) 我想这对于专家来说是一个相当简单的问题,但我在网上找不到任何答案。给出一个简单的案例:
问题:
listToProcess = []
for i in range(0, 10):
listToProcess.append(i)
Run Code Online (Sandbox Code Playgroud)
该列表应传输到 GPU,以进行进一步处理。然后我将继续使用常见的 cuda 程序进行内存复制:
import sys
import pycuda.autoinit
import pycuda.driver as cuda
listToProcess_gpu = cuda.mem_alloc(sys.getsizeof(listToProcess))
cuda.memcpy_htod(listToProcess_gpu, listToProcess)
Run Code Online (Sandbox Code Playgroud)
然后调用内核本身。然而列表没有缓冲区接口,因此会memcpy_htod()崩溃。我也尝试了不同的方法,但最终导致
问题
所以我的问题是要知道是否有一种方法可以将值直接从vector(但我们也可以考虑array)传递给a tensorflow::tensor?
我知道的唯一方法是一个一个地复制每个值。
示例(2D矢量):
tensorflow::Tensor input(tensorflow::DT_FLOAT, tensorflow::TensorShape({50, 20}));
auto input_map = input.tensor<float, 2>();
for (int b = 0; b < 50; b++) {
for (int c = 0; c < 20; c++) {
input_map(b, c) = (vector_name)[b][c];
}
}
Run Code Online (Sandbox Code Playgroud)
有更方便的方法吗?
例如array到vector:
int x[3] = {1, 2, 3};
std::vector<int> v(x, x + sizeof x / sizeof x[0]);
Run Code Online (Sandbox Code Playgroud) 比较模型与其存储的protobuf版本(通过此转换脚本)时,我在输出上存在差异。为了调试,我分别比较了这两层。对于测试序列中的权重和实际图层输出,我会收到相同的输出,因此我不确定如何访问隐藏图层。
这是我如何加载图层
input = graph.get_tensor_by_name("lstm_1_input_1:0")
layer1 = graph.get_tensor_by_name("lstm_1_1/kernel:0")
layer2 = graph.get_tensor_by_name("lstm_1_1/recurrent_kernel:0")
layer3 = graph.get_tensor_by_name("time_distributed_1_1/kernel:0")
output = graph.get_tensor_by_name("activation_1_1/div:0")
Run Code Online (Sandbox Code Playgroud)
这是我认为显示各个元素的方式。
显示重量:
with tf.Session(graph=graph) as sess:
print sess.run(layer1)
print sess.run(layer2)
print sess.run(layer3)
Run Code Online (Sandbox Code Playgroud)
显示输出:
with tf.Session(graph=graph) as sess:
y_out, l1_out, l2_out, l3_out = sess.run([output, layer1, layer2, layer3], feed_dict={input: X_test})
Run Code Online (Sandbox Code Playgroud)
使用此代码sess.run(layer1) == sess.run(layer1,feed_dict={input:X_test}),这不应该是真实的。
有人可以帮我吗?
与我从.h5文件加载该训练模型时相比,在训练后测试 Keras LSTM 模型时,我有很大的不同(第一个的准确度总是 > 0.85,但后者的准确度总是低于 < 0.2,即随机猜测) .
但是我检查了权重,它们是相同的,而且 Keras 给我的稀疏布局 viaplot_model是相同的,但由于这只能检索粗略的概述:
是否可以显示 Keras 模型的完整布局(尤其是节点连接)?
visualization lstm keras recurrent-neural-network machine-learning-model
我仍然想检查嵌入式设备的Bootloader + Linux Startupcode.因此,我想抓住打印到串口的每个命令的时间.
我知道有像putty(我可以推荐),getty,cutecom,picocom,屏幕等程序.但是这些都没有为主机屏幕上的输入消息添加时间戳(我真的不是在谈论日期,更多比如自第一次输出以来已经消失了多少ms).实际上听起来不是什么大不了的事.
我发现有一个脚本正在做我想要的东西,称为抓取但是它不能正常工作,因为它会减慢处理整个输出.我在另一个论坛讨论过这个问题(如果你想知道:抓住问题,但它不是主题的一部分).所以我不能使用那个脚本.
再说一次:你能告诉我一个Linux终端,它为每一行添加时间戳,这是从串口收到的吗?
谢谢
[编辑:]我发现了一个非常粗糙的解决方法,谷物,想要有一些设置,因为它每次使用时锁定端口.最后,它会添加实际的日期和时间,而不是每个步骤之间的启动时间和difftime,因此您可以看到我仍在寻找适当的解决方案.