Rai*_*rop 6 python keras tensorflow
我正在尝试训练一个只有一个卷积层的非常简单的模型。
def kernel_model(filters=1, kernel_size=3):
input_layer = Input(shape=(250,1))
conv_layer = Conv1D(filters=filters,kernel_size=kernel_size,padding='same',use_bias = False)(input_layer)
model = Model(inputs=input_layer,output=conv_layer)
return model
Run Code Online (Sandbox Code Playgroud)
但是输入(X)、预测输出(y_pred)和true_output(y_true)都是复数。当我调用函数时model.fit(X,y_true)
有错误
TypeError: Gradients of complex tensors must set grad_ys (y.dtype = tf.complex64)
这是否意味着我必须手动编写反向传播?
我应该怎么做才能解决这个问题?谢谢
您的 DNN 需要通过反向传播最小化损失函数。为了最小化某些东西,它自然需要有一个排序。复数是无序的,而实数是有序的。所以你通常需要一个损失函数L: Complex -> Reals
将复值损失函数从简单平方更改为:
error = K.cast(K.mean(K.square(y_pred_propgation - y_true)),tf.complex64)
Run Code Online (Sandbox Code Playgroud)
为复数的实值大小 ||.||^2:
error = K.mean(K.square(K.abs(y_true-y_pred)))
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
2111 次 |
| 最近记录: |