相关疑难解决方法(0)

tensorflow中的条件图和访问张量大小的for循环

首先是广泛的问题:

  • 是否可以构建具有张量流的条件图?
  • 如果是,那么自动梯度计算和已实现的优化器是否可以使用它?
  • 我可以访问张量的形状并将其转换为整数,以便使用"if"条件和"for i in range()"循环吗?

我的实际用例是我想用可变张量长度进行一维卷积.为此,我首先需要一个if语句,如果长度大于1,则只执行卷积.然后我有一个for循环,通过卷积的张量.问题是这段代码:

for i in range(tf.shape(tensor)[0]): 
Run Code Online (Sandbox Code Playgroud)

不起作用,因为范围运算符需要一个整数.我能以某种方式将其转换为整数吗?

最后,我想用adagrad训练这个模型,无论是自动区分还是已经实现的优化器


编辑:

这是1D卷积,后来将成为我模型中两个层中的第一个.类型错误是每个触发一个版本的for循环的背后

import tensorflow as tf 
import numpy as np 

def convolve(s, Tl, Tr, b):

    if (tf.shape(s)[0] == 1):
        return s

    sum = 0

    # for i in range(tf.shape(s)[0] - 1): # error: TypeError: range() integer end argument expected, got Tensor
    # for i in range(s._shape._dims[0]._value - 1): # error: TypeError: unsupported operand type(s) for -: 'NoneType' and 'int'
    for i in range(s.get_shape().as_list()[0] - 1): # …
Run Code Online (Sandbox Code Playgroud)

python tensorflow

9
推荐指数
1
解决办法
4057
查看次数

标签 统计

python ×1

tensorflow ×1