所以很长一段时间我都有一个坏习惯,就是走到一条线的末端,i按下键然后按下右箭头插入最后一个字符后.然而,这是非常低效的,无法做到hjkl.
什么是更好的方式插入线的非常结束?
我试图在PyTorch中编写一个用于二进制分类的神经网络,而我对损失函数感到困惑。
我看到BCELoss是专门用于二进制分类的通用功能。我还看到,对于N个可能的类,N个输出的输出层是常规分类的标准。但是,对于二进制分类,似乎可以是1个或2个输出。
因此,我应该有2个输出(每个标签1个),然后将我的0/1训练标签转换为[1,0]和[0,1]数组,或者对单变量输出使用类似S形的东西?
以下是相关的代码段,因此您可以看到:
self.outputs = nn.Linear(NETWORK_WIDTH, 2) # 1 or 2 dimensions?
def forward(self, x):
# other layers omitted
x = self.outputs(x)
return F.log_softmax(x) # <<< softmax over multiple vars, sigmoid over one, or other?
criterion = nn.BCELoss() # <<< Is this the right function?
net_out = net(data)
loss = criterion(net_out, target) # <<< Should target be an integer label or 1-hot vector?
Run Code Online (Sandbox Code Playgroud)
提前致谢。
我正在尝试编写一个将PNG数据传输到FFMPEG并将其呈现为视频的程序。该程序的视频输出无效,因此我将PNG屏幕截图用作调试输入。
屏幕截图是在任何图像查看器中均可正常打开的所有有效PNG文件。但是,当我运行命令时:
cat 2017*.png | ./ffmpeg -f image2pipe -r 1 -vcodec png -i - -vcodec libx264 out.mp4
Run Code Online (Sandbox Code Playgroud)
我确实从目录中的2017年开始获得了一个视频输出,其中每个屏幕截图都有1秒的视频。但是,该视频完全为黑色,并且在开始播放视频后立即完成。(不是每一帧一秒或一帧)。
如果有任何区别,这是在Windows的MSYS上,使用Windows版本的FFMPEG。
我可以更改什么,以便实际上可以通过管道输入制作视频?我的第一个猜测是它可能与错误的args或缺少适当的编解码器有关。
我试图排序一组无符号长.但是,由于某种原因,qsort用零填充整个数组而不是对它进行排序.我将展示对函数,比较器和GDB的调用.
此图显示了qsort之前和之后的数组,以及我对函数的调用.
这是电话:
qsort(scores[c], sizeof(scores[c]), sizeof(scores[c][0]), comparator);
Run Code Online (Sandbox Code Playgroud)
这是我的比较器函数,称为比较器:
int comparator(const void *p, const void *q)
{
if( *((unsigned long *)p) < *((unsigned long *)q)){
return -1;
}
else if( *((unsigned long *)p) == *((unsigned long *)q)){
return 0;
}
else{
return 1;
}
}
Run Code Online (Sandbox Code Playgroud)
是什么导致了这一点,我该怎么办呢?
我有以下问题,其中调试中的输出似乎完全违反代码所说的内容,似乎它可能是编译器中的错误,除非我遗漏了一些东西.
所以这是代码,它应该创建两个文件名字符串并删除其中一个文件.
auto *real = (base_dir + "/index.txt").c_str();
auto *bkp = (base_dir + "/index.txt.new").c_str();
remove(real);
Run Code Online (Sandbox Code Playgroud)
但是,它在实践中没有表现出这种行为,实际上我们在gdb中得到以下内容:
auto *real = (base_dir + "/index.txt").c_str();
(gdb) n
auto *bkp = (base_dir + "/index.txt.new").c_str();
(gdb) n
remove(real);
(gdb) p real
$1 = 0x7060e8 "./ss-clientdir/index.txt.new"
(gdb) p bkp
$2 = 0x7060e8 "./ss-clientdir/index.txt.new"
Run Code Online (Sandbox Code Playgroud)
正如您所看到的,尽管使用具有不同字符串文字的两个不同表达式初始化字符串,但在初始化之后它们最终会成为指向同一字符串的相同指针.
这有些编译器优化是否已经脱轨或者是什么?