我在宣布我的模型时遇到了问题。我的输入是x_input和y_input,我的输出是预测。如下:
model = Model(inputs = [x_input, y_input], outputs = predictions )
我的输入(x,y)都嵌入了,然后是MatMult。如下:
# Build X Branch
x_input = Input(shape = (maxlen_x,), dtype = 'int32' )
x_embed = Embedding( maxvocab_x + 1, 16, input_length = maxlen_x )
XE = x_embed(x_input)
# Result: Tensor("embedding_1/Gather:0", shape=(?, 31, 16), dtype=float32)
# Where 31 happens to be my maxlen_x
同样适用于y分支...
# Build Y Branch
y_input = Input(shape = (maxlen_y,), dtype = 'int32' )
y_embed = Embedding( maxvocab_y + 1, 16, input_length = maxlen_y )
YE = y_embed(y_input)
# Result: Tensor("embedding_1/Gather:0", shape=(?, 13, 16), dtype=float32)
# Where 13 happens to be my maxlen_y
然后我在两者之间做了一个批处理。 (只需点击每个实例的数据)
from keras import backend as K
dot_merged = K.batch_dot(XE, YE, axes=[2,2] ) # Choose the 2nd component of both inputs to Dot, using batch_dot
# Result: Tensor("MatMul:0", shape=(?, 31, 13), dtype=float32)`
然后我压扁了张量的最后两个维度。
dim = np.prod(list(dot_merged.shape)[1:])
flattened= K.reshape(dot_merged, (-1,int(dim)) )
最终,我将这些扁平数据反馈到一个简单的逻辑回归器中。
predictions = Dense(1,activation='sigmoid')(flattened)
而且,我的预测当然是我对模型的输出。
我将按张量的输出形状列出每层的输出。
Tensor("embedding_1/Gather:0", shape=(?, 31, 16), dtype=float32)
Tensor("embedding_2/Gather:0", shape=(?, 13, 16), dtype=float32)
Tensor("MatMul:0", shape=(?, 31, 13), dtype=float32)
Tensor("Reshape:0", shape=(?, 403), dtype=float32)
Tensor("dense_1/Sigmoid:0", shape=(?, 1), dtype=float32)
具体来说,我得到以下错误。
Traceback (most recent call last):
File "Model.py", line 53, in <module>
model = Model(inputs = [dx_input, rx_input], outputs = [predictions] )
File "/Users/jiangq/tensorflow/lib/python3.6/site-packages/keras/legacy/interfaces.py", line 88, in wrapper
return func(*args, **kwargs)
File "/Users/jiangq/tensorflow/lib/python3.6/site-packages/keras/engine/topology.py", line 1705, in __init__
build_map_of_graph(x, finished_nodes, nodes_in_progress)
File "/Users/jiangq/tensorflow/lib/python3.6/site-packages/keras/engine/topology.py", line 1695, in build_map_of_graph
layer, node_index, tensor_index)
File "/Users/jiangq/tensorflow/lib/python3.6/site-packages/keras/engine/topology.py", line 1665, in build_map_of_graph
layer, node_index, tensor_index = tensor._keras_history
AttributeError: 'Tensor' object has no attribute '_keras_history'
Volia。我哪里做错了? 谢谢你提前帮忙!
- 安东尼
答案 0 :(得分:1)
您是否尝试将后端功能包装到__call__()
图层中?
我认为在Keras层的Model
方法中有一些必要的操作可以正确构建Keras class Migration(migrations.Migration):
dependencies = [
('projects', '0001_initial'),
]
,如果直接调用后端函数则不会执行。