我有一个出现的自定义丢失功能有效(运行这两行时没有错误,如下所示)
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来压缩尺寸...但我尝试了一对并且它没有完全合作,所以这种方法可能存在更大的问题...谢谢为了你的帮助!
答案 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)