从我在网上看到的所有内容来看,FloatTensorsPytorch 对所有内容都是默认设置,当我创建一个张量以传递给我的生成器模块时,它是FloatTensor一个DoubleTensor.
class Generator(nn.Module):
def __init__(self):
super(Generator, self).__init__()
self.fully_connected = nn.Linear(100, 1024*4*4, bias=False)
def forward(self, zvec):
print(zvec.size())
fc = self.fully_connected(zvec)
return(fc.size())
gen = Generator();
gen(torch.from_numpy(np.random.normal(size=100)))
Run Code Online (Sandbox Code Playgroud)
其中产生
RuntimeError: Expected object of type torch.DoubleTensor but found type torch.FloatTensor for argument #2 'mat2'
Run Code Online (Sandbox Code Playgroud) 我不能使用带有 requires_grad 参数的 torch.Tensor()(火炬版本:0.4.1)
没有 requires_grad :
x = torch.Tensor([[.5, .3, 2.1]])
print(x)
> tensor([[0.5000, 0.3000, 2.1000]])
Run Code Online (Sandbox Code Playgroud)
使用 requires_grad=True 或 requires_grad=False :
x = torch.Tensor([[.5, .3, 2.1]], requires_grad=False)
print(x)
Traceback (most recent call last):
File "D:/_P/dev/ai/pytorch/notes/tensor01.py", line 4, in <module>
x = torch.Tensor([[.5, .3, 2.1]], requires_grad=False)
TypeError: new() received an invalid combination of arguments - got (list, requires_grad=bool), but expected one of:
* (torch.device device)
* (torch.Storage storage)
* (Tensor other)
* (tuple of ints size, torch.device device)
didn't match …Run Code Online (Sandbox Code Playgroud) 当最终张量中有多个值时可以使用 autograd 吗?
我尝试了以下方法。
x = torch.tensor([4.0, 5.0], requires_grad=True)
y = x ** 2
print(y)
y.backward()
Run Code Online (Sandbox Code Playgroud)
抛出错误
RuntimeError: grad can be implicitly created only for scalar outputs
Run Code Online (Sandbox Code Playgroud)
然而,以下工作。
x = torch.tensor([4.0, 5.0], requires_grad=True)
y = x ** 2
y = torch.sum(y)
print(y)
y.backward()
print(x.grad)
Run Code Online (Sandbox Code Playgroud)
输出为
tensor(41., grad_fn=<SumBackward0>)
tensor([ 8., 10.])
Run Code Online (Sandbox Code Playgroud)
我在这里遗漏了什么,或者我可以继续假设 autograd 仅在最终张量中有单个值时才有效?
如何使用 tf.gradients 获取函数的梯度?当我使用 GradientDescentOptimizer.minimize() 时,以下正在工作,tf.gradients 似乎在 x^2+2 的派生处评估 1,即 2x
我错过了什么?
x = tf.Variable(1.0, trainable=True)
y = x**2 + 2
grad = tf.gradients(y, x)
#grad = tf.train.GradientDescentOptimizer(0.1).minimize(y)
init = tf.global_variables_initializer()
with tf.Session() as sess:
sess.run(init)
grad_value = sess.run(grad)
print(grad_value)
Run Code Online (Sandbox Code Playgroud) 我今天在使用 PyTorch 时遇到了一个奇怪的问题。
在检查with范围内的网络参数时,我期望requires_grad是False,但显然情况并非如此,除非我自己明确设置所有参数。
代码
链接到网络 ->要点
net = InceptionResnetV2()
with torch.no_grad():
for name, param in net.named_parameters():
print("{} {}".format(name, param.requires_grad))
Run Code Online (Sandbox Code Playgroud)
上面的代码将告诉我所有参数仍然需要 grad,除非我明确指定param.requires_grad = False。
我的torch版本:1.0.1.post2
我有两个大小相同的arraylists,一个用于JButton,一个用于JTextField.单击按钮时,应更新相应的文本字段.我怎么能意识到这一点?
ps jcomponents对(jbutton + jtextfield)的数量不固定.它们旨在由用户添加或删除.但是,它们必须处于固定顺序.
ArrayList<JButton> buttonList = new ArrayList<JButton>();
ArrayList<JTextField> textFieldList = new ArrayList<JTextField>();
private JButton createButton(){
JButton button = new JButton("Choose File");
buttonList.add(button);
button.addActionListener(
new ActionListener(){
public void actionPerformed(ActionEvent event){
textField = textFieldList.get(i)
textField.setText("show updats");
}
}
);
return button;
}
Run Code Online (Sandbox Code Playgroud)
我怎么知道JButton ArrayList中的索引"i"?
const unique_ptr<int> upi{new int{4}};
cout << ++*upi << '\n';
Run Code Online (Sandbox Code Playgroud)
似乎upi是一个const smart pointer.在int这点仍然可以修改.如果我想要什么申报int为const?
const unqiue_ptr<int> const upi{new int{4}}; //Error: duplicate const
Run Code Online (Sandbox Code Playgroud) PhysX FleX很酷。但是我更喜欢Bullet。但是,我在那里找不到任何类似的功能。
有什么建议么?
我有一个由 18260 个输入字段和 4 个输出组成的大数据集。我正在使用 Keras 和 Tensorflow 构建一个可以检测可能输出的神经网络。
但是,我尝试了很多解决方案,但除非我sigmoid在除第一个模型层之外的所有模型层中都使用激活函数,否则准确率不会超过 55% ,如下所示:
def baseline_model(optimizer= 'adam' , init= 'random_uniform'):
# create model
model = Sequential()
model.add(Dense(40, input_dim=18260, activation="relu", kernel_initializer=init))
model.add(Dense(40, activation="sigmoid", kernel_initializer=init))
model.add(Dense(40, activation="sigmoid", kernel_initializer=init))
model.add(Dense(10, activation="sigmoid", kernel_initializer=init))
model.add(Dense(4, activation="sigmoid", kernel_initializer=init))
model.summary()
# Compile model
model.compile(loss='sparse_categorical_crossentropy', optimizer=optimizer, metrics=['accuracy'])
return model
Run Code Online (Sandbox Code Playgroud)
使用sigmoid激活在所有层是否正确?使用 sigmoid 时准确率达到 99.9%,如上所示。所以我想知道模型实现是否有问题。
我正在上一门课程PyTorch。我想知道为什么我们需要单独告诉torch.utils.data.DataLoader它在运行的设备上输出。如果模型已经启动,CUDA为什么它不自动相应地更改输入?这种模式对我来说似乎很有趣:
model.to(device)
for ii, (inputs, labels) in enumerate(trainloader):
# Move input and label tensors to the GPU
inputs, labels = inputs.to(device), labels.to(device)
Run Code Online (Sandbox Code Playgroud)
是否存在我希望模型在 GPU 上运行但我的输入在 CPU 模式上运行的用例,反之亦然?