例如:
Subplot(2, 2, 1).axis(‘off’)
System provided configuration should be stored in /usr/share/lightdm/lightdm.conf.d/. System administrators can override this configuration by adding files to /etc/lightdm/lightdm.conf.d/ and /etc/lightdm/lightdm.conf. Files are read in the above order and combined together to make the LightDM configuration.
Matlab:
Python:
idx = 10
orbit = 150
num = 360
train_image_addr = '../MATLAB/x_data/x'+'%04d'%idx+'_%d'%orbit+'_%d.jpg'%num
柳暗花明
总结
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/ conda
config --set show_channel_urls yes
https://mirrors.tuna.tsinghua.edu.cn/help/anaconda/
最近在做OpenCL的项目,做异构计算。在做的过程中让我不得不重新温习下C语言,不得不去深入理解指针的含义。下面几点我列出了我在《Beginning C:From Novice to Professional》(Ivor Horton)书中学到的几点关于C指针的内容。内容很浅显,但过了4年,重新理解这些简单的知识点,有许多新的体会。所谓大道至简,指针的魅力也许就在这些简单的定义,微小的细节当中。
int *pointer = NULL;
表示不指向任何内存的位置。NULL在多个头文件中都包含。例如stdio.h string.h等。NULL也相当于数字0的指针。即
int *pointer = 0;
与上面的初始化等价。
int *pointer = &number;
pointer变量中存储的是number的地址。
*pointer则是存储在number中的值。
*又称取消引用运算符。
const int *pointer = &value;
不能通过指针改变所指向的值。但可以直接对value进行操作。也可以改变指针指向的地址。
int *const pointer = &value;
指针存储的地址不能改变。但可以改变指针指向的内容。
const int *const pointer = &item;
不能改变存储在指针中的地址,不能改变指向的内容。
指针与数组
1-指针和数组似乎完全不同,但他们有非常紧密的关系,有时候还可以互换。
2-数组和指针重要的区别:
可以改变指针包含的地址;
不能改变数组名称引用的地址。
(使用数组名称而不带索引值,就等于引用数组的第一个元素的地址)
动态内存分配
1-int *pointer = (int*)malloc(5*sizeof(int));
malloc是一般函数,可为任意类型的数据分配内存。因此这个函数并不知道要分配的内存空间要做什么用,所以返回的是一个void类型指针。因此要将返回的地址做类型转换。(int*)
2-int *pointer = (int*)calloc(5,sizeof(int));
calloc()函数与malloc()函数相比有两个优点:
-它把内存分配为给定大小的数组;
-它初始化了所分配的内存,所有位都是0;
3-释放动态内存:
动态内存,应在不需要改内存时释放他们。堆上分配的内存会在程序结束时自动释放,但是为了避免出现内存泄漏,应在使用完后释放内存,或者退出程序时释放内存。
free(pointer);
同时应避免两次释放相同的内存区域,因为这种情况下,free操作是不确定的,因此结果也是无法预料的。
1. the loss with respect to inputs
self.gradients[self.inbound_nodes[0]] += np.dot(grad_cost, self.inbound_nodes[1].value.T)
Cost对某个Node的导数(gradient)等于Cost对前面节点导数的乘积。
So, each node will pass on the cost gradient to its inbound nodes and each node will get the cost gradient from it's outbound nodes. Then, for each node we'll need to calculate a gradient that's the cost gradient times the gradient of that node with respect to its inputs.
注意点一:
要区分Backpropagation 和Gradient Descent是两个步骤,我通过Backpropagation找到gradient,于是找到了变化方向。再通过Gradient Descent来最小化误差。
To find the gradient, you just multiply the gradients for all nodes in front of it going backwards from the cost. This is the idea behind backpropagation. The gradients are passed backwards through the network and used with gradient descent to update the weights and biases.
最终目的是:
射频工程师的爱情诗
佚名
我在时域
你在频域
需要经过傅立叶变换
才能发现你的美丽
我把爱的语言调制到星座
通过伪随机序列
载波到到你的频率
并波束赋形到你的接收阵列矩阵
你说我的爱噪声太大
经过层层滤波
原来发现
那是在宇宙开始的时候
我发给你的爱的微波背景辐射
两百年前粗略的论断
催生傅立叶变换不朽的缠绵
conda remove -n environment-name --all
conda env remove -n env_name
$ ssh-keygen -t rsa -C "your_email@youremail.com"