小编Kyr*_*rol的帖子

C中的宏与函数

我总是看到使用宏比使用函数更好的示例和情况.

有人可以通过一个例子向我解释宏与功能相比的缺点吗?

c function c-preprocessor

93
推荐指数
9
解决办法
8万
查看次数

在TensorFlow中,Gradient Descent vs Adagrad vs Momentum

我正在研究TensorFlow以及如何使用它,即使我不是神经网络和深度学习(只是基础知识)的专家.

以下教程中,我不理解三个优化器之间的实际差异.我看看API,我理解原则,但我的问题是:

1.何时优先使用一个而不是其他一个?

2.知道有重要的区别吗?

deep-learning tensorflow

68
推荐指数
3
解决办法
3万
查看次数

Bash中"while"和"until"之间的区别

while和until之间真正的区别是什么?

我想知道是否可以使用"until"进行越来越多的循环,然后使用while循环.

因为如果我这样做,我就看到了

COUNTER=0
     while [ $COUNTER -lt 10 ]; do
         echo The counter is $COUNTER
         let COUNTER+=1 
     done
Run Code Online (Sandbox Code Playgroud)

还有这个

COUNTER=20
     until [ $COUNTER -lt 10 ]; do
         echo COUNTER $COUNTER
         let COUNTER-=1
     done
Run Code Online (Sandbox Code Playgroud)

他们运作良好.

但如果我做相反的事情,例如:

COUNTER=20
     while [ $COUNTER -lt 10 ]; do
         echo COUNTER $COUNTER
         let COUNTER-=1
     done
Run Code Online (Sandbox Code Playgroud)

脚本没有结束.

这是否意味着我们不能在bash中进行一段时间的反向循环?

bash while-loop

25
推荐指数
5
解决办法
4万
查看次数

如何使用和何时使用memmove在C?

我对使用memmove()有两个疑问:

  • 什么时候最好使用这个函数而不是使用另一个函数(即创建自己的函数)?我不确定我是否理解得当.
  • 函数的签名是void*memmove(void*dest,const void*src,size_t n).如果我有一个简单的数组arr [N],我怎么能把它放到被调用的函数中?arr [N]或&arr [N]?不同之处在于,数组是以初始大小声明还是像指针一样?我有这个疑问,因为我看到很多例子都用于两者.

我希望我能以一种好的方式解释我的怀疑.

编辑:我必须从数组中删除一个元素,然后我想在左侧移动已删除的元素的以下元素.

c function memmove

12
推荐指数
2
解决办法
2万
查看次数

为什么这种形式在C中是正确的?

我在C中有这段代码:

void f(void *x) {
    printf(">>> %p\n", x);
}

int main() {

  f NULL;
    return 0;
}
Run Code Online (Sandbox Code Playgroud)

我认为是NULL的定义,但我想解释一下我的疑问.

c null

8
推荐指数
1
解决办法
208
查看次数

在AdamOptimizer中使用动态学习率有意义吗?

我正在开发一个卷积神经网络,用于基于三个自己的类进行图像识别.我建立了一个基于AlexNet的模型来训练.我想知道两件事:

  1. AdamOptimizer是否在内部(从固定的给定值)执行学习率衰减?
  2. 如果没有,我可以tf.train.exponential_decay用来进行衰变吗?

很少有人赞赏这些例子.谢谢

deep-learning tensorflow

6
推荐指数
1
解决办法
1155
查看次数

bash脚本中的$ @和$*之间的差异

我是bash的新手,我正在学习它,而且我怀疑使用$@和之间的真正区别S*.

我在这里红色Bash特殊参数

我知道两者都扩展到位置参数,但差异发生在双引号内.顺便说一句"$@" = "$1" "$2"..."$n"可能不同于"S*" = "$1$2...$n".

我尝试用一​​个简单的脚本来理解它:

if [ $# -gt 0 ]; then
       echo "Your command line contains $# arguments" 
else
       echo "Your command line contains no arguments"
       exit  fi

echo "Params are: "
echo $@  
echo $* 
echo "$@"    
echo "$*"
Run Code Online (Sandbox Code Playgroud)

如果我像这样在终端中执行我的脚本 ~./my_script par1 par2 par3

结果总是一样的:

Params are:
par1 par2 par3
par1 par2 par3
par1 par2 par3
par1 par2 par3
Run Code Online (Sandbox Code Playgroud)

也许我不明白这两个特殊变量的实际用途以及我的例子是否正确.我想用一个很好的例子来弄清楚这一点.

bash

5
推荐指数
1
解决办法
936
查看次数

使用strsep在C中解析字符串(替代方法)

我想解析一个字符串,我使用strsep函数:

#include <stdio.h>
#include <stdlib.h>
#include <string.h>

int main()
{

  char str[] = "Marco:Q:2F7PKC";
  char *token1, *token2, *token3;
  char *r = malloc(30);

  strcpy(r, str);

  token1 = strsep(&r, ":");
  token2 = strsep(&r, ":");
  token3 = strsep(&r, ":");

  printf("tok1 = %s\n", token1);
  printf("tok2 = %s\n", token2);
  printf("tok3 = %s\n", token3);

  free(r);

  return 0;

}
Run Code Online (Sandbox Code Playgroud)

该函数完成了它的工作,但是如果我启动valgrind,分配的字符串char * r不会正确释放(肯定会丢失:1个块中的30个字节).

我想知道为什么以及是否有其他方法可以做同样的事情,也许没有呼叫strsep.

我打电话给valgrind valgrind --tool=memcheck --leak-check=full --show-reachable=yes ./a.out

c parsing valgrind strsep

5
推荐指数
1
解决办法
2万
查看次数

哪种形式更适合在Bash中使用?

我正在学习Bash,我看到了这个形式

C =示例

回声"$ C"

给出相同的表格结果

C = "示例"

echo $ C.

我想知道是否更好地将""放在变量的赋值中或者在$之后.或者如果它无动于衷.或者如果一个人认为比另一个人"更美丽".

bash quoting

3
推荐指数
1
解决办法
337
查看次数

如何控制Python函数参数的准确性

我在Python中有这个函数:

def Rotate_Vector(vector, axis, direction):
Run Code Online (Sandbox Code Playgroud)

其中vector是一个由3个元素组成的元组(每个元素代表向量在笛卡尔轴上的三个坐标x,y,z),axis是一个轴的坐标,direction是一个整数,表示顺时针或逆时针运动。

我想在我的函数中控制输入参数是否正确:

  • 向量必须是 3 个整数的元组
  • axis必须是 3 个整数的元组,可能的值应该是 -1, 0, 1
  • 方向必须是值为 +1 或 -1 的整数。

我想知道在函数中进行这些控制(类型、值和元素数量)的正确方法。

编辑:

可以是 6 种可能的情况: (1,0,0) (-1,0,0) (0,1,0) (0,-1,0) (0,0,1) (0,0,- 1)

python parameters function

3
推荐指数
1
解决办法
1227
查看次数