pytorch 的二值化输入
binarize input for pytorch
请问如何让pytorch加载的数据一加载就二值化?
像 Tensorflow 可以通过:
train_data = mnist.input_data.read_data_sets(data_directory, one_hot=True)
pytorch如何实现one_hot=True
的效果。
我现在的data_loader是:
torch.set_default_tensor_type('torch.FloatTensor')
train_loader = torch.utils.data.DataLoader(
datasets.MNIST('data/', train=True, download=True,
transform=transforms.Compose([
# transforms.RandomHorizontalFlip(),
transforms.ToTensor()])),
batch_size=batch_size, shuffle=False)
我想将train_loader中的数据二值化。
现在我正在做的是:加载数据后,
for data,_ in train_loader:
torch.round(data)
data = Variable(data)
使用torch.round()
函数。这是正确的吗?
one-hot编码思想用于class化。听起来您可能正在尝试创建一个自动编码器。
如果您正在创建自动编码器,则无需舍入,因为 BCELoss 可以处理 0 到 1 之间的值。请注意,训练时最好不要应用 sigmoid,而是使用 BCELossWithLogits 因为它提供数值稳定性。
这是一个 autoencoder 与 MNIST
的例子
如果您尝试做 classifcation,则不需要单热向量,您只需输出等于 classes 数量的神经元数量,即 MNIST输出 10 个神经元,然后将其与具有相应预期 class 值
的 LongTensor 一起传递给 CrossEntropyLoss
这是 MNIST
上 classification 的示例
请问如何让pytorch加载的数据一加载就二值化? 像 Tensorflow 可以通过:
train_data = mnist.input_data.read_data_sets(data_directory, one_hot=True)
pytorch如何实现one_hot=True
的效果。
我现在的data_loader是:
torch.set_default_tensor_type('torch.FloatTensor')
train_loader = torch.utils.data.DataLoader(
datasets.MNIST('data/', train=True, download=True,
transform=transforms.Compose([
# transforms.RandomHorizontalFlip(),
transforms.ToTensor()])),
batch_size=batch_size, shuffle=False)
我想将train_loader中的数据二值化。 现在我正在做的是:加载数据后,
for data,_ in train_loader:
torch.round(data)
data = Variable(data)
使用torch.round()
函数。这是正确的吗?
one-hot编码思想用于class化。听起来您可能正在尝试创建一个自动编码器。
如果您正在创建自动编码器,则无需舍入,因为 BCELoss 可以处理 0 到 1 之间的值。请注意,训练时最好不要应用 sigmoid,而是使用 BCELossWithLogits 因为它提供数值稳定性。
这是一个 autoencoder 与 MNIST
的例子如果您尝试做 classifcation,则不需要单热向量,您只需输出等于 classes 数量的神经元数量,即 MNIST输出 10 个神经元,然后将其与具有相应预期 class 值
的 LongTensor 一起传递给 CrossEntropyLoss这是 MNIST
上 classification 的示例