Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python U-Net分段Keras的Hausdorff损失_Python_Tensorflow_Keras_Loss Function - Fatal编程技术网

Python U-Net分段Keras的Hausdorff损失

Python U-Net分段Keras的Hausdorff损失,python,tensorflow,keras,loss-function,Python,Tensorflow,Keras,Loss Function,我想使用我在这里找到的hausdorff()作为我的U-Net中的损失,但是当我尝试这样做时,我得到了以下错误: ValueError: Dimensions must be equal, but are 3 and 2 for 'loss/conv2d_19_loss/MatMul' (op: 'MatMul') with input shapes: [?,3], [2,16384]. 我并不真正理解hausdorff距离的代码,但我在循环中使用了与网络相同的批量大小。我还尝试使用另一个损失

我想使用我在这里找到的hausdorff()作为我的U-Net中的损失,但是当我尝试这样做时,我得到了以下错误:

ValueError: Dimensions must be equal, but are 3 and 2 for 'loss/conv2d_19_loss/MatMul' (op: 'MatMul') with input shapes: [?,3], [2,16384].
我并不真正理解hausdorff距离的代码,但我在循环中使用了与网络相同的批量大小。我还尝试使用另一个损失函数来打印y_true和y_pred的形状,以查看所需的大小,但它只打印
Tensor(“损失/conv2d_19_损失/stripped_切片:0”,shape=(?,?,?),dtype=float32)
。 我试图通过跟踪错误的路径来找到问题,但我没有插入代码

    Traceback (most recent call last):
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py", line 686, in _call_cpp_shape_fn_impl
    input_tensors_as_shapes, status)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/errors_impl.py", line 473, in __exit__
    c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors_impl.InvalidArgumentError: Dimensions must be equal, but are 3 and 2 for 'loss/conv2d_19_loss/MatMul' (op: 'MatMul') with input shapes: [?,3], [2,16384].

During handling of the above exception, another exception occurred:

Traceback (most recent call last):
  File "/home/etudiant_master/Documents/Marouane/Scripts/Test_parameters.py", line 367, in <module>
    test_hyperparam_list('Loss', LOSS)
  File "/home/etudiant_master/Documents/Marouane/Scripts/Test_parameters.py", line 339, in test_hyperparam_list
    test_ligne = leave_one_out_model_test(batch_size, nb_epoch, validation_split, kernels, kernel_size, dropout_rate, pooling_size, block_number, path_test = path_test, iteration = var, metrics = metrics, optimizer = optimizer, loss = loss, activation = activation, activation2 = activation2)
  File "/home/etudiant_master/Documents/Marouane/Scripts/Test_parameters.py", line 123, in leave_one_out_model_test
    model = train_model.CNNs_layers(kernels = kernels, kernel_size = kernel_size, dropout_rate = dropout_rate, pooling_size = pooling_size, block_number = block_number, activation = activation, activation2 = activation2, metrics = metrics, optimizer = optimizer, loss = loss)
  File "/home/etudiant_master/Documents/Marouane/Scripts/train_model.py", line 120, in CNNs_layers
    model.compile(optimizer= optimizer, loss=loss, metrics=[metrics])
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/training.py", line 849, in compile
    output_loss = weighted_loss(y_true, y_pred, sample_weight, mask)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/keras/_impl/keras/engine/training.py", line 454, in weighted
    score_array = fn(y_true, y_pred)
  File "/home/etudiant_master/Documents/Marouane/Scripts/Metrics.py", line 73, in Weighted_Hausdorff_loss
    d_matrix = tf.sqrt(tf.maximum(tf.reshape(tf.reduce_sum(gt_b*gt_b, axis=1), (-1, 1)) + tf.reduce_sum(all_img_locations*all_img_locations, axis=1)-2*(tf.matmul(gt_b, tf.transpose(all_img_locations))), 0.0))
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/ops/math_ops.py", line 2022, in matmul
    a, b, transpose_a=transpose_a, transpose_b=transpose_b, name=name)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/ops/gen_math_ops.py", line 2516, in _mat_mul
    name=name)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 787, in _apply_op_helper
    op_def=op_def)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3162, in create_op
    compute_device=compute_device)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3208, in _create_op_helper
    set_shapes_for_outputs(op)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2427, in set_shapes_for_outputs
    return _set_shapes_for_outputs(op)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2400, in _set_shapes_for_outputs
    shapes = shape_func(op)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 2330, in call_with_requiring
    return call_cpp_shape_fn(op, require_shape_fn=True)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py", line 627, in call_cpp_shape_fn
    require_shape_fn)
  File "/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site-packages/tensorflow/python/framework/common_shapes.py", line 691, in _call_cpp_shape_fn_impl
    raise ValueError(err.message)
ValueError: Dimensions must be equal, but are 3 and 2 for 'loss/conv2d_19_loss/MatMul' (op: 'MatMul') with input shapes: [?,3], [2,16384].
回溯(最近一次呼叫最后一次):
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/common\u shapes.py”,第686行,在调用cpp\u shape\u fn\u impl中
输入\张量\作为\形状、状态)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/errors_impl.py”,第473行,在退出中__
c_api.TF_GetCode(self.status.status))
tensorflow.python.framework.errors\u impl.InvalidArgumentError:维度必须相等,但对于输入形状为:[?、3]、[216384]的“loss/conv2d\u 19\u loss/MatMul”(op:'MatMul'),维度为3和2。
在处理上述异常期间,发生了另一个异常:
回溯(最近一次呼叫最后一次):
文件“/home/etudiant_master/Documents/Marouane/Scripts/Test_parameters.py”,第367行,在
测试超参数列表(“丢失”,丢失)
文件“/home/etudiant\u master/Documents/Marouane/Scripts/Test\u parameters.py”,第339行,在测试超参数列表中
test\u ligne=leave\u one\u out\u model\u test(批大小、nb\u epoch、验证\u分割、内核、内核大小、退出率、池大小、块数、路径测试=路径测试、迭代=var、度量=度量、优化器=优化器、丢失=丢失、激活=激活、激活2=激活2)
文件“/home/etudiant\u master/Documents/Marouane/Scripts/Test\u parameters.py”,第123行,左侧为模型测试
模型=训练模型.CNNs\u层(内核=内核,内核大小=内核大小,辍学率=辍学率,池大小=池大小,块数=块数,激活=激活,激活2=激活2,度量=度量,优化器=优化器,损失=损失)
文件“/home/etudiant\u master/Documents/Marouane/Scripts/train\u model.py”,第120行,CNNs\u层
compile(优化器=优化器,损耗=损耗,度量=[度量])
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/keras/_impl/keras/engine/training.py”,第849行,编译
输出损耗=加权损耗(y_真、y_pred、样本重量、掩码)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/keras/_impl/keras/engine/training.py”,第454行,以加权形式显示
分数数组=fn(y_真,y_pred)
文件“/home/etudiant\u master/Documents/Marouane/Scripts/Metrics.py”,第73行,在加权Hausdorff\u损失中
d_矩阵=tf.sqrt(tf.maximum(tf.reformation(tf.reduce_sum(gt_b*gt_b,axis=1),(-1,1))+tf.reduce_sum(all_img_位置*all_img_位置,axis=1)-2*(tf.matmul(gt_b,tf.transpose(all_img_位置)),0.0)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/ops/math_ops.py”,第2022行,matmul格式
a、 b,转置a=转置a,转置b=转置b,名称=名称)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/ops/gen_math_ops.py”,第2516行,在
名称=名称)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/op_def_library.py”,第787行,位于“应用”op_helper中
op_def=op_def)
文件“/home/etudiant_master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第3162行,在create_op中
计算设备=计算设备)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第3208行,位于“创建”和“操作”助手中
为输出设置形状(op)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第2427行,用于输出的集合形状
返回_设置_形状_输出(op)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第2400行,用于输出
形状=形状函数(op)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/ops.py”,第2330行,与
回传呼叫\u cpp\u shape\u fn(op,require\u shape\u fn=True)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/common\u shapes.py”,第627行,在call\u cpp\u shape\u fn中
需要(形状)
文件“/home/etudiant\u master/anaconda3/envs/tensorflow/lib/python3.6/site packages/tensorflow/python/framework/common\u shapes.py”,第691行,在调用cpp\u shape\u fn\u impl中
提升值错误(错误消息)
ValueError:维度必须相等,但对于输入形状为:[?、3]、[216384]的“loss/conv2d_19_loss/MatMul”(op:“MatMul”)而言,维度为3和2。
我没有发现关于hausdorff loss实现的任何内容,所以我希望有人会发现问题。
非常感谢

ValueError:对于输入形状为:[?、3]、[216384]的'loss/conv2d_19_loss/MatMul'(op:'MatMul'),维度必须相等,但为3和2。
错误在于它正在执行矩阵乘法'MatMul',但从第一个矩阵接收到的列的维度'3'不相等,从第二个矩阵接收到的行的维度'2'不相等。请检查您的形状。是的,我理解错误,但正如我在尝试打印y_pred和y_true(在keras文件中)的形状时所说的,它给了我带?的形状?。我的网络与骰子或交叉熵一起工作,所以我认为它与hausdorff代码有关