この理解にelseステートメントを追加したいのですが、以下のコードのさまざまな領域にそれを配置することはあまりうまくいきません。私は、長さと活動を考えるとかなり読みやすいと思うので、以下のフォーマットが好きです。
これは重複ではありません:ガイダンスはこのフォームの解決策ではないように見えるため、リスト内包表記のif / else。
私はこのスレッドからガイダンスを受けていますが、それでも機能することがわかりません。お知らせ私がしたいことをif
してelse
、このような手段、スレッド以下:
['b' if isinstance(el, str) else el for el in X] # When using 'if' and 'else', put 'for' in the end
だから私はif
andとelse
andを持っているので、それらは順番に来for
て終わりです。
import torch
import numpy as np
class mlp1(torch.nn.Module):
def __init__(self, num_features, num_hidden, num_classes):
super(mlp1, self).__init__()
self.num_classes = num_classes
self.input_layer = torch.nn.Linear(num_features, num_hidden)
self.out_layer = torch.nn.Linear(num_hidden, num_classes)
def forward(self, x):
x = self.input_layer(x)
x = torch.sigmoid(x)
logits = self.out_layer(x)
probas = torch.softmax(logits, dim=1)
return logits, probas
model = mlp1(num_features=28*28, num_hidden=100, num_classes=10)
freeze = ['input_layer']
# randomly select weights
locked_masks = {
name: torch.tensor(np.random.choice([False, True],
size=torch.numel(weight),
# freeze 90% of the weights
p=[0.0, 1.0]).reshape(weight.shape))
if any(weight in name for weight in freeze)
else
name: torch.tensor(np.random.choice([False, True],
size=torch.numel(weight),
# freeze 90% of the weights
p=[0.0, 1.0]).reshape(weight.shape))
for name, weight in model.named_parameters()
}
もし他の辞書の理解の一部ではなく、リンクされた記事で述べたように、それはPythonで三項演算子です。
あなたがしていることは間違っており、を生成しSyntaxError
ます。
これはあなたに何をすべきかについての考えを与えるはずです。
keys = range(6)
values = range(6)
print({(k if k%2==0 else k**2) : (v if v%2==1 else v**2) for k, v in zip(keys, values)})
これは、キーの場合は数値を2乗し、値の場合は奇数の場合は2乗します。これは次のように出力します。
{0: 0, 1: 1, 2: 4, 9: 3, 4: 16, 25: 5}
この記事はインターネットから収集されたものであり、転載の際にはソースを示してください。
侵害の場合は、連絡してください[email protected]
コメントを追加