我很难理解 keras.layers.Conv2DTranspose 的输出形状
这是原型:
keras.layers.Conv2DTranspose(
filters,
kernel_size,
strides=(1, 1),
padding='valid',
output_padding=None,
data_format=None,
dilation_rate=(1, 1),
activation=None,
use_bias=True,
kernel_initializer='glorot_uniform',
bias_initializer='zeros',
kernel_regularizer=None,
bias_regularizer=None,
activity_regularizer=None,
kernel_constraint=None,
bias_constraint=None
)
Run Code Online (Sandbox Code Playgroud)
在文档(https://keras.io/layers/convolutional/)中,我读到:
If output_padding is set to None (default), the output shape is inferred.
Run Code Online (Sandbox Code Playgroud)
在代码(https://github.com/keras-team/keras/blob/master/keras/layers/convolutional.py)中,我读到:
out_height = conv_utils.deconv_length(height,
stride_h, kernel_h,
self.padding,
out_pad_h,
self.dilation_rate[0])
out_width = conv_utils.deconv_length(width,
stride_w, kernel_w,
self.padding,
out_pad_w,
self.dilation_rate[1])
if self.data_format == 'channels_first':
output_shape = (batch_size, self.filters, out_height, out_width)
else:
output_shape = (batch_size, out_height, out_width, self.filters)
Run Code Online (Sandbox Code Playgroud)
和(https://github.com/keras-team/keras/blob/master/keras/utils/conv_utils.py):
def deconv_length(dim_size, …Run Code Online (Sandbox Code Playgroud) 我对以下代码感到困惑:
#include <stdio.h>
#include <stdint.h>
int main(int argc, char ** argv)
{
uint16_t a = 413;
uint16_t b = 64948;
fprintf(stdout, "%u\n", (a - b));
fprintf(stdout, "%u\n", ((uint16_t) (a - b)));
return 0;
}
Run Code Online (Sandbox Code Playgroud)
返回:
$ gcc -Wall test.c -o test
$ ./test
4294902761
1001
$
Run Code Online (Sandbox Code Playgroud)
似乎表达式(a-b)具有类型uint32_t.我不明白为什么因为两个运算符都是uint16_t.
任何人都可以向我解释这个吗?
我试图使用vim 7.4.9持久撤消
在我的vimrc中,我有:
set undodir=/home/myname/.vim/undo//
set undofile
set undolevels=1000
set undoreload=10000
Run Code Online (Sandbox Code Playgroud)
当然/home/myname/.vim/undo目录存在.
我用vim打开了一些文件并进行了一些更改.
我在/home/myname/.vim/undo/中看到了undofiles:
$ ll /home/myname/.vim/undo/
total 23K
-rw-r--r-- 1 hpcpcollab hpcpcollab 523 18 sept. 11:23 %home%myname%foo
-rw-r--r-- 1 hpcpcollab hpcpcollab 14K 18 sept. 11:03 %home%myname%bar
-rw-r--r-- 1 hpcpcollab hpcpcollab 2,2K 18 sept. 11:52 %home%myname%test
Run Code Online (Sandbox Code Playgroud)
但是,当我关闭这些文件时,重新打开它们,并按"u"以撤消,vim回复:"已经在最早的更改".
我错过了什么?
谢谢
朱利安
有没有办法让以下代码:
import traceback
def log(message):
print "%s: %s" %(traceback.extract_stack()[0:-1][-1][2], message)
def f1():
log("hello")
class cls(object):
def f1(self):
log("hi there")
f1()
mycls = cls()
mycls.f1()
Run Code Online (Sandbox Code Playgroud)
显示:
f1: hello
cls.f1: hi there
Run Code Online (Sandbox Code Playgroud)
代替:
f1: hello
f1: hi there
Run Code Online (Sandbox Code Playgroud)
?
我试图使用模块'inspect'但没有成功......
朱利安
编辑:
这里的要点是'log'函数能够自己检索其调用者名称(使用traceback,inspect或任何必要的平均值).
我不想将类名称或"消息"之外的任何内容传递给"日志"功能.
这是一个对列表执行操作的简单代码:
>>> a = [0] * 5
>>> a
[0, 0, 0, 0, 0]
>>> a[0] = 5
>>> a
[5, 0, 0, 0, 0]
>>>
Run Code Online (Sandbox Code Playgroud)
就目前而言,没有异常.
现在,我尝试使用字典列表而不是整数列表来执行相同的操作:
>>> a = [{}] * 5
>>> a
[{}, {}, {}, {}, {}]
>>> a[0]['b'] = 4
>>> a
[{'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}, {'b': 4}]
>>>
Run Code Online (Sandbox Code Playgroud)
我不明白为什么列表中的所有元素都被修改了......
谁能告诉我为什么?并提供解决方法?