我知道我可以通过hydra.run.dir=XXX从命令行设置来更改配置中的工作目录。但是如何从不使用 CLI 参数的脚本中正确执行此操作,甚至将日志保存在我设置的目录中?
该代码不起作用,因为:
cfg.hydra。UPD:我在评论中得到了指示。if __name__ == 'main':我可以在调用 Hydra 之前更改块中的 Hydra 参数。hydra.run.dir但如何从脚本中获取和修改呢?
@hydra.main(config_path="conf", config_name="config")
def main(cfg):
cfg.hydra.run.dir = "./c_out/cached_loss" # no such attribute
logger.info('I log something')
Run Code Online (Sandbox Code Playgroud)
我的九头蛇配置如下所示:
defaults:
- hydra/job_logging: custom_logging
Run Code Online (Sandbox Code Playgroud)
# hydra/custom_logging.yaml
# python logging configuration for tasks
version: 1
formatters:
simple:
format: '[%(asctime)s][%(name)s][%(levelname)s] - %(message)s'
handlers:
console:
class: logging.StreamHandler
formatter: simple
stream: ext://sys.stdout
file:
class: logging.FileHandler
formatter: simple
# relative to the job log directory
filename: …Run Code Online (Sandbox Code Playgroud) 我正在使用VS 2010.
当我在调试模式下运行此程序时,它会抛出堆栈溢出异常,并在第99行的chkstk.asm文件中显示一个断行.
但是当我在Release模式下运行它时,它没问题.
此外,如果我将其中一个数组的大小减小到10000,它在Debug中运行良好.是什么原因?
#include <iostream>
using namespace std;
int main()
{
char w[1000001], temp[1000001];
cout<<"Why?"<<endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud) 我想在TensorBoard中记录一些任意字符串.
我知道如何为任意标量做到这一点:
from tensorflow.core.framework import summary_pb2
value = summary_pb2.Summary.Value(tag='Accuracy', simple_value=0.95)
my_summary = summary_pb2.Summary(value=[value])
summary_writer = tf.summary.FileWriter()
summary_writer.add_summary(summary)
Run Code Online (Sandbox Code Playgroud)
但是对于任意文本摘要,如何做同样的事情呢?
像(不存在)的东西:
value = summary_pb2.Summary.Text(tag='MyTag', str='Arbitrary text come here')
Run Code Online (Sandbox Code Playgroud)
UPD:请注意,我提供了一个如何在不调用的情况下创建任意标量摘要的示例session.run(...).我希望能够为文本做到这一点.
根据《基于物理的渲染:从理论到实现》一书。由Matt Pharr的,格雷格堪(链路,第86-87),
表面切向量被转换为通用矢量,使用变换矩阵中号,但
表面的法向矢量是使用转化
.
我想知道为什么缩放确实会使法线不正确,但不会触及切线向量?为什么法线如此特别?
看书上的图。 
我已经读过,需要对法线进行这种变换以保持法线和切线的正交性。但我想得到一些直观的解释。
我正在为Unity3d编写CG语言着色器.
如果为透明对象制作着色器,则需要创建两个相似的传递SubShader.第一个只渲染背面(带Cull Front),第二个只渲染正面(带Cull Back).但是顶点和片段函数的代码对于两次传递是相同的.
是否有可能不加倍代码并声明一些函数,这些函数将在传递之间共享?
我希望在我的代码示例中有类似的东西:
Shader "cool shader" {
Properties {
...
}
SubShader {
CGPROGRAM
// need to declare vertexOutput somewhow here
float4 sharedFragFoo(vertexOutput i) : COLOR // How to make smth like this?
{
....
return float4(...);
}
ENDCG
pass {
CGPROGRAM
#pragma vertex vert
#pragma fragment frag
vertexOutput vert(vertexInput v) {
vertexOutput o;
...
return o;
}
float4 frag(vertexOutput i) : COLOR
{
return sharedFragFoo(i); // call the shared between …Run Code Online (Sandbox Code Playgroud) Octave 是否像 Matlab 一样支持枚举?
我还没有找到任何有关它的信息。
我们可以通过在类定义中添加枚举块来创建枚举类。例如,WeekDays 类枚举一周中的一组天(来自 Matlab 文档)。
%file WeekDays.m
classdef WeekDays
enumeration
Monday, Tuesday, Wednesday, Thursday, Friday
end
end
Run Code Online (Sandbox Code Playgroud)
它在 Matlab 中运行良好,我访问枚举值
x = WeekDays.Tuesday;
Run Code Online (Sandbox Code Playgroud)
但Octave不会编译这一行,尽管文件 WeekDays.m 由 Octave 编译且没有错误。
我使用Keras和tensorflow后端.
Will Keras还会计算我设置的图层的渐变trainable = False吗?
当我修复大部分层时,我没有观察到深度网络(如Resnet-50)的加速.看起来仍然计算固定层的渐变,但它们的值乘以0.任何人都可以告诉我这是真的吗?
这是一个小网络的例子,我修复了第一层.
import numpy as np
import keras
import keras.applications.resnet50
x = keras.layers.Input(shape=(5,))
y = keras.layers.Dense(5)(x)
z = keras.layers.Dense(5)(y)
model = keras.models.Model(x, z)
for layer in model.layers[:2]:
layer.trainable = False
model.compile(optimizer='rmsprop', loss='mse')
print model.summary()
X = np.random.rand(100, 5)
model.fit(X, X, epochs=100)
Run Code Online (Sandbox Code Playgroud) 我有一个数组,例如(在Java中)
int[] a = new int[N];
Run Code Online (Sandbox Code Playgroud)
我已经使用它,现在想要有零的数组.什么将花费更少的时间:创建一个新的数组(它将被初始化为零)或迭代现有的数组并用零填充?
我想无论答案是什么,它在C++中都是一样的?
我在OS X 10.9.3,2.4 GHz Intel Core i5,8 GB DDR3上运行以下代码
int main() {
vector<int> expectation(10e8, -1.0);
cout << "size()=" << expectation.size() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
int main() {
vector<int> expectation(10e9, -1.0);
cout << "size()=" << expectation.size() << endl;
return 0;
}
Run Code Online (Sandbox Code Playgroud)
-
$ time ./a.out
size()=1000000000
real 0m3.935s
user 0m1.530s
sys 0m2.103s
$ time ./b.out
size()=10000000000
real 4m49.853s
user 0m16.186s
sys 0m22.966s
Run Code Online (Sandbox Code Playgroud)
在b.pp中,我们有10倍大的向量.
我想知道,为什么在情况下,时间b情况下的约100倍变得比大的情况下一个?
UPD
我找到了,我迷失了!
10e8 = 10 ^ 9 int = 4 …
考虑二叉搜索树,其中所有键都是唯一的.节点没有父指针.
我们有最多n/2个标记的节点.
我可以在O(n 2)时删除所有这些(使用postorder遍历,当遇到标记的节点时,在O(n)处删除每个).但这是不合适的.我需要一个算法来在O(n)时间删除所有标记的节点.谢谢.
编辑删除后,我需要保持节点顺序不变.
EDIT-2所以看起来我应该使用典型的删除删除每个标记的节点(在左子树中找到最右边的节点并将其与要删除的节点交换).
c++ ×3
tensorflow ×2
3d ×1
algorithm ×1
arrays ×1
enumeration ×1
fb-hydra ×1
function ×1
java ×1
keras ×1
keras-layer ×1
logging ×1
macos ×1
math ×1
matlab ×1
octave ×1
opengl ×1
python ×1
shader ×1
tensorboard ×1
vector ×1
visual-c++ ×1