有时默认的标准激活,如ReLU,tanh,softmax,......和LeakyReLU等高级激活是不够的.它也可能不属于keras-contrib.
你如何创建自己的激活功能?
在tensorflow中,你可以使用非平滑函数作为损失函数,例如分段(或使用if-else)?如果你不能,为什么你可以使用ReLU?
在这个链接 SLIM中 ,它说
"例如,我们可能希望最大限度地减少对数损失,但我们感兴趣的指标可能是F1得分,或交叉点超过联盟得分(不可区分,因此不能用作损失)."
它是否意味着"不可区分",例如设置问题?因为对于ReLU,在0点,它是不可区分的.
我正在使用Keras和TensorFlow后端来构建和运行神经网络.我需要在丢失函数的输出张量上使用numpy函数.更具体地说,我的损失函数涉及找到最近的邻居,为此需要将cras函数用于ckdTree.我尝试使用输出张量转换为numpy数组K.eval()
.但是,InvalidArgument
当我尝试编译模型时,这会引发错误,我相信,因为您无法eval()
在符号变量上运行.
这是一个玩具代码片段,可以重现此错误.
import numpy as np
from keras import backend as K
from keras.models import Sequential
from keras.layers.core import Flatten, Dense, Reshape
from keras.optimizers import Adam
def loss(y_true, y_pred):
y_pred_numpy = K.eval(y_pred)
# perform some numpy operations on y_pred_numpy
return K.constant(0)
''' Model '''
input_shape = (10,10,10,3)
train_images = np.zeros((1,10,10,10,3))
train_labels = np.zeros((1,1,1,1,3))
model = Sequential()
model.add(Flatten(input_shape=input_shape))
model.add(Dense(3000, use_bias=True, bias_initializer='zeros'))
model.add(Reshape((10,10,10,3)))
model.summary()
opt = Adam(lr=1E-4)
model.compile(optimizer=opt, loss=loss)
Run Code Online (Sandbox Code Playgroud)
以上给出了以下错误:
InvalidArgumentError (see …
Run Code Online (Sandbox Code Playgroud) 我想要一种方法来降低TensorFlow(大约:截断尾数)中浮点数的精度到定义的整个范围内的任意位数.我不需要完全以降低的精度编写代码(如tf.float16),而是需要提出一系列操作来降低张量的精度,同时保留原始类型(例如tf.float32).
例如,如果整个范围是0到1,精度是8位,则0.1234将变为圆形(0.1234*256)/ 256 = 0.125.这使用简单的舍入.
我还想进行统计舍入,其中每个方向的舍入概率与该值的距离成正比.例如,0.1234*256 = 31.5904,这将在59%的时间内达到32/256,并且在41%的时间内达到31/256.
额外的问题:如何获取现有图表并修改它以在每次卷积后添加舍入?
我想在tensorflow中使用fft。但是我发现分别在numpy和tensorflow中使用FFT函数时结果不同。特别是当输入数组的大小很大时
import tensorflow as tf
import numpy as np
aa = tf.lin_space(1.0, 10000.0, 10000)
bb = tf.lin_space(1.0, 10000.0, 10000)
dd = tf.concat([[aa],[bb]],axis = 0)
c_input = tf.complex(dd[0,:], dd[1,:])
Spec = tf.fft(c_input)
sess = tf.Session()
uuu = sess.run(Spec)
print(uuu)
aaa = np.linspace(1.0, 10000.0, 10000)
bbb = aaa + 1j*aaa
ccc = np.fft.fft(bbb)
print(ccc)
Run Code Online (Sandbox Code Playgroud)
结果是
[ 11645833.000000+11645826.j -544529.875000 -6242453.5j
-913097.437500 -781089.0625j ..., 78607.218750 -108219.109375j
103245.156250 -182935.3125j 214871.765625 -790986.0625j ]
[ 50005000.00000000+50005000.j -15920493.78559075+15910493.78559076j
-7962746.10739718 +7952746.10739719j ...,
5300163.19893340 -5310163.19893345j
7952746.10739715 -7962746.10739723j
15910493.78559067-15920493.78559085j]
Run Code Online (Sandbox Code Playgroud)
所以,当我在tensorflow中使用fft函数时,我该怎么办才能获得相同的结果?谢谢你的答案
我发现tf.fft输出的数据类型为complex64。但是np.fft.fft的输出是complex128。这是这个问题的关键吗?我怎么解决这个问题?