使用tensorflow引入了一个新层

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了使用tensorflow引入了一个新层相关的知识,希望对你有一定的参考价值。

我想在tensorflow中引入一个新层作为激活函数。但是,有些错误无法解决。这是新图层的代码。

def smooth_relu(tensor):
    e=0.15
    alpha=0.005

    def smooth(tensor):

            smoothtensor=tf.cond(tensor<(e+alpha) ,lambda: (tensor-alpha)*(tensor-alpha),lambda:e*((tensor-alpha)-self.e*0.5),    tf.cond(
                        pred,
                        true_fn=None,
                        false_fn=None,
                        strict=False,
                        name=None,
                        fn1=None,
                        fn2=None
                        ))


            return (smoothtensor)



    newtensor=tf.cond(tensor<0 ,lambda :0, lambda:smooth(tensor))
    # In addition to return the result, we return my_random for initializing on each
    # iteration and alpha to check the final value used.

    return (newtensor)

这是错误的。

ValueError: Shape must be rank 0 but is rank 2 for 'cond/Switch' (op: 'Switch') with input shapes: [1,1], [1,1].
答案

那是因为没有为smoothtensor指定的属性为dtype

你的错是在这一行:

def smooth(tensor): `smoothtensor=tf.cond(tensor<(e+alpha) ,lambda: (tensor-alpha)*(tensor-alpha),lambda:e*((tensor-alpha)-self.e*0.5),dtype=tf.float32)`

您可以分配的可用属性:

tf.cond(
    pred,
    true_fn=None,
    false_fn=None,
    strict=False,
    name=None,
    fn1=None,
    fn2=None
)

编辑:

只需在行代码的末尾添加一个括号......它就丢失了

以上是关于使用tensorflow引入了一个新层的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 PyTorch 在预训练模型上添加新层? (给出了 Keras 示例。)

谷歌浏览器调试jsp 引入代码片段,如何调试代码片段中的js

手写数字识别——基于全连接层和MNIST数据集

如何使用模块化代码片段中的LeakCanary检测内存泄漏?

如何在 Keras / Tensorflow 中将(无,)批量维度重新引入张量?

终于!TensorFlow引入了动态图机制Eager Execution