Python R Keras:创建更高阶的张量以应用reduce_mean()
我想在我创建并存储在Python R Keras:创建更高阶的张量以应用reduce_mean(),python,r,tensorflow,keras,Python,R,Tensorflow,Keras,我想在我创建并存储在列表()中的张量列表上使用tf$reduce\u mean()。如何获取一个张量列表,并生成一个更高秩的张量,将这些单独的张量作为新张量的axis=0位置的条目?我认为在Python中,可以使用列表并使用np.newaxis来实现这一点(tf$newaxis) 我想更大的问题是:当Python中的TensorFlow将列表传递给其函数时,例如: tf.concat([a,b,c],0) R Keras中的平行结构是什么?正如您将在下面看到的,包装list()与我尝试的方式不
列表()中的张量列表上使用tf$reduce\u mean()
。如何获取一个张量列表,并生成一个更高秩的张量,将这些单独的张量作为新张量的axis=0
位置的条目?我认为在Python中,可以使用列表并使用np.newaxis
来实现这一点(tf$newaxis
)
我想更大的问题是:当Python中的TensorFlow将列表传递给其函数时,例如:
tf.concat([a,b,c],0)
R Keras中的平行结构是什么?正如您将在下面看到的,包装list()
与我尝试的方式不一样
下面是如何使用array()
和apply()
在base R中执行一个简单示例:
##reduce#mean()我想要的行为--矩阵元素的平均值:
a[1,]13
#> [2,] 2 4
#>
#> , 2
#>
#> [,1] [,2]
#> [1,] 5 7
#> [2,] 6 8
#>
#> , 3
#>
#> [,1] [,2]
#> [1,] 9 11
#> [2,] 10 12
应用(abc,边际=c(1,2),乐趣=平均值)
#> [,1] [,2]
#> [1,] 5 7
#> [2,] 6 8
由(v0.3.0)于2020年4月14日创建
关于接近TensorFlow中应该是什么样子的猜测:
库(tensorflow)
a您可以使用tf$stack
:
a <- tf$constant(array(1:4, dim=c(2,2)))
b <- tf$constant(array(5:8, dim=c(2,2)))
c <- tf$constant(array(9:12, dim=c(2,2)))
abc <- tf$stack(list(a, b, c), axis=0L)
#> tf.Tensor(
#> [[[ 1 3]
#> [ 2 4]]
#>
#> [[ 5 7]
#> [ 6 8]]
#>
#> [[ 9 11]
#> [10 12]]], shape=(3, 2, 2), dtype=int32)
tf$reduce_mean(abc, axis=0L)
#> tf.Tensor(
#> [[5 7]
#> [6 8]], shape=(2, 2), dtype=int32)
a
#> [[ 5 7]
#> [ 6 8]]
#>
#> [[ 9 11]
#>[10 12]],shape=(3,2,2),dtype=int32)
tf$reduce_平均值(abc,轴=0L)
#>tf张量(
#> [[5 7]
#>[6 8]],shape=(2,2),dtype=int32)
注意:不要忘记将L
放在轴编号后,将其转换为整数。这正是我需要的答案,谢谢!我认为tf.concat()
文档将在tensorflows文档中链接到tf.stack()
。这超出了这个问题的范围,但是如何为任何东西构造tf$concat()
调用?@mpettis我不确定我是否正确理解了您的问题!但让我试着澄清一下:您需要传递一个张量列表和一个轴编号,例如tf$concat(list(a,b,c),axis=0L)
。但是,顾名思义,它将连接给定轴上的给定张量,即在上一个示例中,它将成为形状为(6,2)
的张量(而不是tf$stack
生成的形状为(3,2,2)
的张量)。这和原始答案确实回答了这个问题。我试图找出tf$concat()
的正确方法签名,因为我得到了一个错误(即使在本例中调用的方法是错误的)。我没有正确解释错误消息。我以为我没有正确地调用带有张量的参数,但错误实际上是因为调用带有axis=0
的第二个参数,而不是axis=0L
。这确实解决了问题,谢谢!