简体   繁体   English

AttributeError: 'float' object 没有属性 'dtype'

[英]AttributeError: 'float' object has no attribute 'dtype'

When I try to use a custom activation function in keras (2.2.5), I create a new activation function gelu.当我尝试在 keras (2.2.5) 中使用自定义激活 function 时,我创建了一个新的激活 function gelu。 add it in activations.py:将其添加到 activations.py 中:

from . import backend as K    
import numpy as np
def gelu(x):
    return 0.5 * x * (1 + K.tanh(K.sqrt(2 / np.pi) * (x + 0.044715 * K.pow(x, 3))))

use it in my main.py:在我的 main.py 中使用它:

cnn1 = Conv1D(filters=256, kernel_size=2, strides=1, padding="same")(gru_output)
cnn1 = Activation('gelu')(cnn1)

But I get a error when working it:但是我在工作时遇到错误:

File "C:/Users/user/Desktop/my/my_main.py", line 253, in <module>
    cnn1 = Activation('gelu')(cnn1)
  File "C:\Users\user\Desktop/my\venv\lib\site-packages\keras\engine\base_layer.py", line 451, in __call__
    output = self.call(inputs, **kwargs)
  File "C:\Users\user\Desktop\my\venv\lib\site-packages\keras\layers\core.py", line 300, in call
    return self.activation(inputs)
  File "C:\Users\user\Desktop\my\venv\lib\site-packages\keras\activations.py", line 16, in gelu
    return 0.5 * x * (1 + K.tanh(K.sqrt(2 / np.pi) * (x + 0.044715 * K.pow(x, 3))))
  File "C:\Users\user\Desktop\my\venv\lib\site-packages\keras\backend\tensorflow_backend.py", line 1675, in sqrt
    zero = _to_tensor(0., x.dtype.base_dtype)
AttributeError: 'float' object has no attribute 'dtype'

So what should i do?所以我该怎么做?

Replace K.sqrt() with tf.math.sqrt()K.sqrt()替换为tf.math.sqrt()

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM