0
我有我的聲明模型的問題。我的輸入是x_input和y_input,我的輸出是預測。如下:Keras後端造型發出
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。我哪裏做錯了? 感謝您提前提供幫助!
- 安東尼
感謝您的答覆!不。我沒有。我將如何添加一個Lambda圖層? –
我沒有測試,但是'dot_merged =拉姆達(拉姆達X:K.batch_dot(X [0],X [1],軸線= [2,2]))([XE,YE])'然後'扁平化= Flatten()(dot_merged)'應該可以工作。 –
哦,我的天啊。有效!!!謝謝你,謝謝你,謝謝你。 Upvote :) –