【发布时间】:2018-01-15 16:13:47
【问题描述】:
我有一个带有多个自定义层的 keras 模型。当我跑步时:
model_.compile(optimizer=rms, loss=contrastive_loss,metrics=['accuracy'])
它编译没有任何问题。 但是当我尝试用数组列表拟合模型时:
X = [T1,R1] + [T2, R2]
model_.fit(X, [None]*2, epochs=50, batch_size=32)
我得到一个错误。 它似乎是由 engine\training.pyc 引起的,因为它打印:
C:\Tools\Anaconda2\lib\site-packages\keras\engine\training.pyc in _standardize_input_data(data, names, shapes, check_batch_axis, exception_prefix)
124 for i in range(len(names)):
125 array = arrays[i]
126 if len(array.shape) == 1:
127 array = np.expand_dims(array, 1)
128 arrays[i] = array
AttributeError: 'NoneType' object has no attribute 'shape'
也许有人可以帮忙吗?我正在使用 keras 2.1.2 和 theano 0.9.0
编辑:
我试过了:
model_.fit(X, [np.asarray([None])]*2, epochs=50, batch_size=32, verbose=5)
相反,现在我收到以下错误:
ValueError: All input arrays (x) should have the same number of samples. Got array shapes:
然后它打印我的输入数组的形状。
有什么想法吗?
【问题讨论】:
-
为什么会有
None作为输出?y_true = None时你期望如何计算损失函数? -
因为我不知道我的采样层会保留多少个盒子。输出形状将取决于层内的计算。它可能会改变。
-
但是你必须有目标数据。
fit不需要形状,它需要数据。 -
你的模型的输出形状是什么?你是如何定义 contrastive_loss 的?
-
我的模型的输出形状是 [(None, 3, None, None), (None, 640)]。我使用了 yann.lecun.com/exdb/publis/pdf/hadsell-chopra-lecun-06.pdf 中的 contrastive_loss
标签: python error-handling keras theano