我想在这里修改示例:
# include <cppad/cppad.hpp>
namespace { // ---------------------------------------------------------
// define the template function JacobianCases<Vector> in empty namespace
template <typename Vector>
bool JacobianCases()
{ bool ok = true;
using CppAD::AD;
using CppAD::NearEqual;
double eps99 = 99.0 * std::numeric_limits<double>::epsilon();
using CppAD::exp;
using CppAD::sin;
using CppAD::cos;
// domain space vector
size_t n = 2;
CPPAD_TESTVECTOR(AD<double>) X(n);
X[0] = 1.;
X[1] = 2.;
// declare independent variables and starting recording
CppAD::Independent(X);
// a calculation between the domain and range values
AD<double> Square …
Run Code Online (Sandbox Code Playgroud) Windows 10,Unity 5.5.2 - 请注意,这会将.Net隐式限制为3.5版.
我有一个C++应用程序,我正试图通过无线方式连接到Unity应用程序.我希望不断地将字节数组从C++发送到Unity.问题是,对于我希望部署到的设备(Hololens,在我的情况下),System.Net.Sockets不可用.
在C++中,我使用Winsock2.h头实例化一个套接字.我可以使用UDP或TCP,对我的应用程序来说无关紧要.
在Unity中,我希望使用Unity.Networking或UWP来建立连接.
要使用UWP,我只看到使用async关键字的示例,这在Unity中使用是一件令人头痛的问题(我老实说不确定是否可能).
同时,Unity.Networking似乎使用自己的协议,我不知道如何将它与我的C++应用程序接口.
任何人都可以提供一种在Unity中完成此任务的非常简单,简洁的方法吗?
编辑:使用线程在Hololens上也很困难,异步任务似乎也是一个困难的命题.
我正在尝试编译一个大的C文件(专门用于MATLAB mexing).C文件大约20 MB(如果你想玩它,可以从GCC bug跟踪器获得).
这是我正在运行的命令和屏幕输出,如下所示.这已经运行了几个小时,如您所见,优化已被禁用(-O0).为什么这么慢?有没有办法让我更快?
(供参考:Ubuntu 12.04(精确穿山甲)64位和GCC 4.7.3)
/usr/bin/gcc -c -DMX_COMPAT_32 -D_GNU_SOURCE -DMATLAB_MEX_FILE -I"/usr/local/MATLAB/R2015a/extern/include" -I"/usr/local/MATLAB/R2015a/simulink/include" -ansi -fexceptions -fPIC -fno-omit-frame-pointer -pthread -O0 -DNDEBUG path/to/test4.c -o /tmp/mex_198714460457975_3922/test4.o -v
Using built-in specs.
COLLECT_GCC=/usr/bin/gcc
Target: x86_64-linux-gnu
Configured with: ../src/configure -v --with-pkgversion='Ubuntu/Linaro 4.7.3-2ubuntu1~12.04' --with-bugurl=file:///usr/share/doc/gcc-4.7/README.Bugs --enable-languages=c,c++,go,fortran,objc,obj-c++ --prefix=/usr --program-suffix=-4.7 --enable-shared --enable-linker-build-id --libexecdir=/usr/lib --without-included-gettext --enable-threads=posix --with-gxx-include-dir=/usr/include/c++/4.7 --libdir=/usr/lib --enable-nls --with-sysroot=/ --enable-clocale=gnu --enable-libstdcxx-debug --enable-libstdcxx-time=yes --enable-gnu-unique-object --enable-plugin --with-system-zlib --enable-objc-gc --enable-multiarch --disable-werror --with-arch-32=i686 --with-abi=m64 --with-multilib-list=m32,m64 --with-tune=generic --enable-checking=release --build=x86_64-linux-gnu --host=x86_64-linux-gnu --target=x86_64-linux-gnu
Thread model: posix
gcc version 4.7.3 (Ubuntu/Linaro 4.7.3-2ubuntu1~12.04)
COLLECT_GCC_OPTIONS='-c' '-D' …
Run Code Online (Sandbox Code Playgroud) 我有一个非常大的张量流图和两组变量:A和B.我创建了两个优化器:
learning_rate = 1e-3
optimizer1 = tf.train.AdamOptimizer(learning_rate).minimize(loss_1, var_list=var_list_1)
optimizer2 = tf.train.AdamOptimizer(learning_rate).minimize(loss_2, var_list=var_list_2)
Run Code Online (Sandbox Code Playgroud)
这里的目标是迭代地优化变量1和变量2.变量2的权重用于计算损失1,但是在优化损失1时它们是不可训练的.同时,变量1的权重不用于优化损失2(我会说这是一个关键的不对称).
奇怪的是,我发现,优化器2的这种优化要慢得多(2倍),而不是仅仅优化图的那部分.我没有运行任何摘要.
为什么会出现这种现象?我该怎么办呢?如有必要,我可以提供更多细节.
我一直在使用Boost开发一个C++项目,在编译之间,我必须在boost中升级一些东西而没有任何意义,因为现在Boost依赖项将无法编译:
In file included from /usr/include/boost/thread/pthread/mutex.hpp:14:0,
from /usr/include/boost/thread/mutex.hpp:16,
from /usr/include/boost/thread/pthread/thread_data.hpp:12,
from /usr/include/boost/thread/thread.hpp:17,
from /usr/include/boost/thread.hpp:13,
from /blah.h:4,
from bluh.h:3,
from bleh/main.cpp:4:
/usr/include/boost/thread/xtime.hpp:23:5: error: expected identifier before numeric constant
/usr/include/boost/thread/xtime.hpp:23:5: error: expected '}' before numeric constant
/usr/include/boost/thread/xtime.hpp:23:5: error: expected unqualified-id before numeric constant
/usr/include/boost/thread/xtime.hpp:46:14: error: expected type-specifier before 'system_time'
In file included from /usr/include/boost/thread/pthread/mutex.hpp:14:0,
from /usr/include/boost/thread/mutex.hpp:16,
from /usr/include/boost/thread/pthread/thread_data.hpp:12,
from /usr/include/boost/thread/thread.hpp:17,
from /usr/include/boost/thread.hpp:13,
from /blah,
from /bleh,(changed these names, obviously)
from /bluh /main.cpp:4:
/usr/include/boost/thread/xtime.hpp: In function 'int xtime_get(xtime*, int)':
/usr/include/boost/thread/xtime.hpp:73:40: error: 'get_system_time' was …
Run Code Online (Sandbox Code Playgroud) Windows 10,CMake 3.7.0,CUDA v8.0
CMake立即找不到任何东西.我的CMake文件看起来如此:
cmake_minimum_required(VERSION 3.0)
find_package(CUDA REQUIRED)
#...
#(other stuff here)
Run Code Online (Sandbox Code Playgroud)
作为输出,我得到:
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_PREFIXES
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_SUFFIXES
CMake Error: Error required internal CMake variable not set, cmake may be not be built correctly.
Missing variable is:
CMAKE_FIND_LIBRARY_PREFIXES
CMake Error: Error required internal CMake …
Run Code Online (Sandbox Code Playgroud) 我在SWIG中度过了一段时间,部分原因在于缺乏可供学习的优秀C++示例.我终于得到了第一个用SWIG编译的程序,但是遇到了麻烦.让我直接了解代码......
setup.py:
#!/usr/bin/env python
"""
setup.py file for SWIG example
"""
from distutils.core import setup, Extension
decklist_module = Extension('_decklist',
sources=['decklist_wrap.cxx', 'decklist.cpp'],
)
setup (name = 'decklist',
version = '0.1',
author = "Me",
description = """Testing!""",
ext_modules = [decklist_module],
py_modules = ["decklist"],
)
Run Code Online (Sandbox Code Playgroud)
decklist.hpp:
#include <boost/unordered_map.hpp>
class DeckList{
private:
boost::unordered_map<std::string, int> mainBoard;
boost::unordered_map<std::string, int> sideBoard;
public:
void addCard(std::string name, int cardCount);
int getCount(std::string cardName);
DeckList();
~DeckList();
};
Run Code Online (Sandbox Code Playgroud)
decklist.cpp:
#ifndef DECKLIST_H
#define DECKLIST_H
#include "decklist.hpp"
#include <stdio.h>
DeckList::DeckList(){
}
void DeckList::addCard(std::string cardName, …
Run Code Online (Sandbox Code Playgroud) 我正在寻找一种方法来继承遗传参数化的泛型 - 或者如果不可能,那么最接近获得相同功能的方法.
考虑以下:
B类继承自A类
D类继承自C类
现在,我有一节课:
abstract class A<T> where T : C
Run Code Online (Sandbox Code Playgroud)
与构造函数:
public A(T t)
Run Code Online (Sandbox Code Playgroud)
现在,我希望将A类扩展为:
class B<D> : A<C>
Run Code Online (Sandbox Code Playgroud)
创建构造函数:
public B(D t) : base(t){ /*stuff here*/}
Run Code Online (Sandbox Code Playgroud)
但是,这会引发编译时错误,因为D不是C.所以我的两个问题是:
a)有干净的方法吗?在最糟糕的情况下,我认为我可以用C代替D而没有什么问题,但也许这就是为什么这不是一个安全的想法?
b)我是否应该在子类定义中明确说明我的泛型,或者是否有更简洁的方法我应该使用约束类型?
我正在寻找一个通用的,懒惰的评估 - esque过程来简化我的代码.
现在,我有能力加快数学函数的执行 - 前提是我先通过调用另一个方法来预处理它.更具体地说,给定一个类型的函数:
const Eigen::MatrixXd<double, -1, -1> function_name(const Eigen::MatrixXd<double, -1, -1>& input)
Run Code Online (Sandbox Code Playgroud)
我可以将它传递给另一个函数,g
它将产生一个新版本function_name
g_p
,可以更快地执行.
我想从最终用户那里抽象出所有繁忙的工作.理想情况下,我想创建一个类,以便在任何输入(例如)上调用任何函数f
匹配function_name
的方法签名时x
,会发生以下情况:
f
之前是否已被调用.g(f)
,然后调用g_p(x)
.g_p(x)
由于两个原因,这很棘手.第一个,是我不知道如何获得对当前方法的引用,或者如果可能的话,并将其传递给g
.可能有办法解决这个问题,但将一个函数传递给另一个函数对我来说是最简单/最干净的.
第二个更大的问题是如何强制拨打电话g
.我已经阅读了关于模式执行的内容,它几乎可以用于此目的 - 除非我理解错误,否则无法f
在周围的函数调用中引用.
有没有办法干净地实现我的梦想课程?理想情况下,我希望最终推广超出类型function_name
(可能使用模板),但可以一次采取这一步骤.我也对其他解决方案持开放态度以获得相同的功能.
我在尝试使符号替换变得更快时遇到了很多麻烦 - 也就是说,在符号表达式中替换变量并获得双精度变量.
我正在创建一个复杂的函数f,并计算其jacobian df.这是合理的速度,我可以将它保存到文件中.但是当我尝试使用matlabFunction甚至是disp或fprintf时,系统会挂起并无法继续进行(即使matlabFunction设置为未优化).这是一个主要问题,因为我需要能够进行合理快速的替换.
f矢量是24个元素,Jacobian是24 x 78(虽然这里只显示了70个变量,所以这可以压缩到70列;但我怀疑这是问题).
我也知道f和df的某些元素很简单,单独访问时工作正常,但是f和df的某些更复杂的元素无法显示.我想它们很长,但是因为它们计算得很好,所以我不能将它们转换成matlab函数或显示.
更奇怪的是,我可以替换所有符号变量,但是完全替换的f向量的最终显示(例如,通过disp),或者转换为double(通过double())似乎需要永远.
如果你想使用.mat文件,你可以在这里得到它(filedropper链接,它是288kb).我该怎么做才能在合理的时间内写出这个文件?