小编wei*_*ler的帖子

Python:如果条件然后跳过返回

我想知道是否有一种很好的方法可以告诉python解释器跳转到函数的下一个/最后一个return语句.

让我们假设以下虚拟代码:

def foo(bar):
  do(stuff)

  if condition:
    do(stuff)
    if condition2:
      do(stuff)
      if condition3:
        ...

  return (...)
Run Code Online (Sandbox Code Playgroud)

有时候,由于它们依赖于上面的块do(stuff),因此很多条件无法链接.我现在可以这样做:

def foo(bar):
  do(stuff)

  if not condition: return (...)
  do(stuff)
  if not condition2: return (...)
  do(stuff)
  if not condition3: return (...)
    ...

  return (...)
Run Code Online (Sandbox Code Playgroud)

它看起来有点不那么凌乱,但我不得不一次又一次地重复返回语句,这是一个很麻烦的东西,如果它是一个长元组或类似的甚至看起来更糟.完美的解决方案是说"如果没有条件,请跳到最终的退货声明".这有点可能吗?

编辑:明确这一点:我的目标是提高可读性,同时避免性能下降

python return indentation

4
推荐指数
1
解决办法
2454
查看次数

将 Keras 模型应用于符号张量导致 TF2.0 内存泄漏

tldr:我的实现的内存使用量显然随着通过它的样本数量的增加而增加,但网络/样本馈送中不应该有任何内容关心到目前为止传递了多少样本。


当通过功能 API 创建的自定义 Keras 模型传递大量高维数据时,我观察到GPU 内存使用量随着观察到的实例数量的不断增加而不断增长。以下是通过网络传递样本过程的最小示例:

sequence_length = 100
batch_size = 128

env = gym.make("ShadowHand-v1")
_, _, joint = build_shadow_brain(env, bs=batch_size)
optimizer: tf.keras.optimizers.Optimizer = tf.keras.optimizers.SGD()

start_time = time.time()
for t in tqdm(range(sequence_length), disable=False):
    sample_batch = (
        tf.random.normal([batch_size, 1, 200, 200, 3]),
        tf.random.normal([batch_size, 1, 48]),
        tf.random.normal([batch_size, 1, 92]),
        tf.random.normal([batch_size, 1, 7])
    )

    with tf.GradientTape() as tape:
        out, v = joint(sample_batch)
        loss = tf.reduce_mean(out - v)

    grads = tape.gradient(loss, joint.trainable_variables)
    optimizer.apply_gradients(zip(grads, joint.trainable_variables))
    joint.reset_states()

print(f"Execution Time: …
Run Code Online (Sandbox Code Playgroud)

python memory-leaks out-of-memory keras tensorflow

4
推荐指数
1
解决办法
1494
查看次数

条件顺序是否会影响绩效?

我是如何根据脚本的速度在Python中命令条件的?在SQL中,它并不像"解释器"那样假设哪个条件排序最快.

在Python中,据我所知,条件的顺序将由解释器给出.举个例子,如果我链条或者条件,最好是按假定的时间订购条件它们会消耗,因为当第一个条件不适用时,解释器可能会停止寻找其他条件吗?

python performance conditional-statements

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