因此,我尝试使用张量流实现居中和缩放,其中我需要将张量中的值==0替换为1.0。
我知道用 numpy 来做到这一点x_std[x_std == 0.0] = 1.0
,但无法找出在 TensorFlow 2.0 上做到这一点的最佳方法。
代码是:
def _center_scale_xy(X, Y, scale=True):
""" Center X, Y and scale if the scale parameter==True
Returns
-------
X, Y, x_mean, y_mean, x_std, y_std
"""
# center
x_mean = tf.reduce_mean(X,axis=0)
X -= x_mean
y_mean = tf.reduce_mean(Y,axis=0)
Y -= y_mean
# scale
if scale:
x_std = tf.math.reduce_std(X,axis=0)
#x_std[x_std == 0.0] = 1.0 #This one I need to implement with tensors
X /= x_std
y_std = tf.math.reduce_std(Y,axis=0)
y_std[y_std == 0.0] …
Run Code Online (Sandbox Code Playgroud) 我有一组张量正在填充,pad_sequence
但我需要保证它们的固定长度。我现在不能这样做,因为pad_sequence
会将较短的张量延伸到最长的张量,如果最长的张量没有达到我想要的长度,我就完蛋了。我认为解决方案可以是向其中一个张量添加零以填充到我想要的长度,这样填充的结果将具有我想要的长度。我不知道该怎么做
假设我有一个形状为torch.Size([44])
且所需长度为 50 的张量,如何向其添加零以达到 的形状torch.Size([50])
?无论初始张量形状如何,都需要保持这一点。
我想做一些类似 argmax 但有多个最高值的事情。我知道如何使用普通的 torch.argmax
>>> a = torch.randn(4, 4)
>>> a
tensor([[ 1.3398, 1.2663, -0.2686, 0.2450],
[-0.7401, -0.8805, -0.3402, -1.1936],
[ 0.4907, -1.3948, -1.0691, -0.3132],
[-1.6092, 0.5419, -0.2993, 0.3195]])
>>> torch.argmax(a)
tensor(0)
Run Code Online (Sandbox Code Playgroud)
但现在我需要找到前 N 个值的索引。所以像这样的事情
>>> a = torch.randn(4, 4)
>>> a
tensor([[ 1.3398, 1.2663, -0.2686, 0.2450],
[-0.7401, -0.8805, -0.3402, -1.1936],
[ 0.4907, -1.3948, -1.0691, -0.3132],
[-1.6092, 0.5419, -0.2993, 0.3195]])
>>> torch.argmax(a,top_n=2)
tensor([0,1])
Run Code Online (Sandbox Code Playgroud)
我在 pytorch 中没有找到任何能够执行此操作的函数,有人知道吗?
我在决定如何为我的 DNN 模型的分类特征创建嵌入时遇到了一些麻烦。该功能由一组非固定的标签组成。
特点是这样的:
column = [['Adventure','Animation','Comedy'],
['Adventure','Comedy'],
['Adventure','Children','Comedy']
Run Code Online (Sandbox Code Playgroud)
我想这样做,tensorflow
所以我知道tf.feature_column模块应该可以工作,我只是不知道要使用哪个版本。
谢谢!
我现在正在使用 pytorch,但我缺少一个层:tf.keras.layers.StringLookup
它有助于处理 ids。有没有解决方法可以用 pytorch 做类似的事情?
我正在寻找的功能的示例:
vocab = ["a", "b", "c", "d"]
data = tf.constant([["a", "c", "d"], ["d", "a", "b"]])
layer = tf.keras.layers.StringLookup(vocabulary=vocab)
layer(data)
Outputs:
<tf.Tensor: shape=(2, 3), dtype=int64, numpy=
array([[1, 3, 4],
[4, 1, 2]])>
Run Code Online (Sandbox Code Playgroud) 所以我有一个比我的内存更大的文本文件,我想在 PyTorch 中创建一个逐行读取的数据集,这样我就不必将其全部加载到内存中。我发现 pytorchIterableDataset
作为我的问题的潜在解决方案。它仅在使用 1 个工作人员时按预期工作,如果使用多个工作人员,则会创建重复的记录。让我给你看一个例子:
有一个testfile.txt
包含:
0 - Dummy line
1 - Dummy line
2 - Dummy line
3 - Dummy line
4 - Dummy line
5 - Dummy line
6 - Dummy line
7 - Dummy line
8 - Dummy line
9 - Dummy line
Run Code Online (Sandbox Code Playgroud)
定义一个IterableDataset:
0 - Dummy line
1 - Dummy line
2 - Dummy line
3 - Dummy line
4 - Dummy line
5 - Dummy line
6 - Dummy line …
Run Code Online (Sandbox Code Playgroud)