训练时丢失函数的张量维尺寸/等级问题

时间:2018-03-30 06:27:53

标签: python tensorflow rank tensor loss-function

我有一个出现的自定义丢失功能有效(运行这两行时没有错误,如下所示)

var ViewSystem = UIView() ViewSystem.frame = CGRect(x: 50, y: 100, width: 70, height: 70) @objc func TestPressed(sender: UIButton?) {Test.text=String((sender?.tag)!) func ButtonCreate () { let button = UIButton() button.frame = CGRect(x: 0, y: 0, width: 70, height: 70) button.addTarget(self, action: #selector(TestPressed), for: .touchUpInside) button.backgroundColor = UIColor.red button.tag=5 ViewSystem.addSubview(button) self.view.addSubview(ViewSystem) } }

然而,当我实际继续进行模型训练(批量大小为10,000)时,使用此丢失函数会产生以下错误...

  

InvalidArgumentError(参见上面的回溯):操作输入   Select类型的Select_4必须具有相同的大小和形状。输入0:   [1,10000]!=输入1:[10000] [[节点:Select_4 =选择[T = DT_FLOAT,   _device =“/ job:localhost / replica:0 / task:0 / device:GPU:0”](Less_7,Squeeze_6,Squeeze_7)]]

可能只是需要添加另一个tf.squeeze来压缩尺寸...但我尝试了一对并且它没有完全合作,所以这种方法可能存在更大的问题...谢谢为了你的帮助!

1 个答案:

答案 0 :(得分:0)

使用numpy模块,

import numpy as np

并定义

input0 = tf.where(tf.less(Y * out, 0)
input1 = tf.squeeze((alpha_cost*out)**2 - tf.sign(Y)*out + tf.abs(Y))

尝试将input1从rank-1数组重新整形为row-vector:

input1 = np.reshape(input1, (1, 10000)) 

赋予它与input0相同的形状。您可以断言input1具有正确的形状:

assert(input1.shape == (1,10000)) 

并检查input0和input1是否具有相同的尺寸:

assert(input0.shape == input1.shape)