小编can*_*all的帖子

使用argmax在tensorflow中切割张量

我想在tensorflow中创建一个动态丢失函数.我想计算信号FFT的能量,更具体地说,只计算最主要峰值周围的3号窗口.我无法在TF中实现,因为它会抛出很多错误,比如StrideInvalidArgumentError (see above for traceback): Expected begin, end, and strides to be 1D equal size tensors, but got shapes [1,64], [1,64], and [1] instead.

我的代码是这样的:

self.spec = tf.fft(self.signal)
self.spec_mag = tf.complex_abs(self.spec[:,1:33])
self.argm = tf.cast(tf.argmax(self.spec_mag, 1), dtype=tf.int32)
self.frac = tf.reduce_sum(self.spec_mag[self.argm-1:self.argm+2], 1)
Run Code Online (Sandbox Code Playgroud)

由于我的64位批处理和数据维度也是64,因此形状self.signal(64,64).我希望只计算FFT的AC分量.由于信号是真正有价值的,只有一半的频谱可以完成工作.因此,形状self.spec_mag(64,32).

该fft中的最大值位于self.argm具有形状的位置(64,1).

现在我想通过以下方法计算最大峰值周围3个元素的能量:self.spec_mag[self.argm-1:self.argm+2].

但是,当我运行代码并尝试获取值时self.frac,我会遇到多个错误.

python tensorflow

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

如何在张量流中保存/冻结任意pickle模型?

我正在使用 zalando 的代码,由 Nvidia 实现为渐进式 GAN。请参阅: https: //github.com/zalandoresearch/disentangling_conditional_gans

他们在训练时使用 3 个网络:GDGs。所有三个模型都是https://github.com/zalandoresearch/disentangling_conditional_gans/blob/master/tfutil.py#L424Network中定义的类的实例

这些模型使用许多辅助函数进行存储和加载,这些函数使用 python 的 pickle 格式将 3 个模型保存为*.pkl.

我只对导出模型感兴趣Gs

如何将其转换为保存的模型(因为代码不使用 tf.Saver),最后转换为冻结模型,以便我可以轻松推断。

加载模型后,我会:

allvars = [n.name for n in tf.get_default_graph().as_graph_def().node]
Gs_vars = [i for i in allvars if i.split('/')[0] == 'Gs']
Run Code Online (Sandbox Code Playgroud)

但是,当运行此命令时:

Gs_saver = tf.train.Saver({"Gs": Gs_vars})
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误说:

*** ValueError: Slices must all be Variables: Gs/latents_in
Run Code Online (Sandbox Code Playgroud)

使用该模型的正确实现Gs是:

images = Gs.run(latents, labels, masks, minibatch_size=minibatch_size, num_gpus=config.num_gpus, out_mul=127.5, out_add=127.5, out_shrink=image_shrink, …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

5
推荐指数
0
解决办法
450
查看次数

如果变量存在,如何返回变量

我有以下功能,但是data当我运行时它会抛出错误,例如在分配之前访问过foo(-1)。我希望它返回None。我们可以从一个函数返回许多值,其中一个是有条件的。我不想在if elif构造中写返回。

def foo(x):
    if x > 1:
        data = range(0,10)
    elif x < 0:
        print 'not valid'

    return 1, 2, 3, data or None
Run Code Online (Sandbox Code Playgroud)

除了在开始时定义数据,还有其他选择吗?像return 1, 2, 3, [data if data]使用列表理解之类的东西

python

0
推荐指数
2
解决办法
4630
查看次数

为什么每次保存模型的哈希值都会改变?

我正在使用torch.save()来保存模型文件.但是,每次我保存它,它都会改变.为什么这样?

netG_1 = torch.load('netG.pth')
netG_2 = torch.load('netG.pth')

torch.save(netG_1, 'netG_1.pth')
torch.save(netG_2, 'netG_2.pth')
Run Code Online (Sandbox Code Playgroud)

使用md5sum *.pth:

779f0fefca47d17a0644033f9b65e594  netG_1.pth
476f502ec2d1186c349cdeba14983d09  netG_2.pth
b0ceec8ac886a11b79f73fc04f51c6f9  netG.pth
Run Code Online (Sandbox Code Playgroud)

该模型是此类的一个实例:

https://github.com/taoxugit/AttnGAN/blob/master/code/model.py#L397

python pytorch

0
推荐指数
1
解决办法
62
查看次数

标签 统计

python ×4

tensorflow ×2

pytorch ×1