2017-12-17 6 views
0

So versuche ich, zwei keras Tensoren zu verketten:keras verketten entlang Dimension 0 Valueerror

a = keras.layers.Input(shape=[5,], dtype='float', name='a') 
b = keras.layers.Input(shape=[5,], dtype='float', name='b') 
s = keras.layers.concatenate([a, b], axis=0) 
model = keras.models.Model(inputs=[a, b], outputs=s) 

aa = np.array([[1,1,1,1,1]]) 
bb = np.array([[3,3,3,3,3]]) 

cc = model.predict({'a':aa, 'b':bb}) 

was i bekam:

Traceback (most recent call last):File"D:\Anaconda3\envs\kerase\lib\sitepackages\IPython\core\interactiveshell.py", line 2910, in run_code 
exec(code_obj, self.user_global_ns, self.user_ns) 
File "<ipython-input-64-ddbf264b3bdb>", line 50, in <module> 
cc = model.predict({'a':aa, 'b':bb}) 
File "D:\Anaconda3\envs\kerase\lib\site-packages\keras\engine\training.py", line 1713, in predict 
verbose=verbose, steps=steps) 
File "D:\Anaconda3\envs\kerase\lib\site-packages\keras\engine\training.py", line 1278, in _predict_loop 
outs[i][batch_start:batch_end] = batch_out 

Valueerror: konnte nicht Eingabearray übertragen von Form (2, 5) in Form (1,5)

Ich verstehe nicht. Benütze ich den 'axis' Parameter nicht richtig? Mit axis = -1 wurden die Tensoren korrekt entlang der letzten Dimension verkettet.

Danke.

Antwort

0

ok, 2 Rang-1-Tensoren können nur auf eine einzige Art verkettet werden. und das funktioniert:

a = keras.layers.Input(shape=[1, 5], dtype='float', name='a') 
b = keras.layers.Input(shape=[1, 5], dtype='float', name='b') 
s = keras.layers.concatenate([a, b], axis=-2) 

model = keras.models.Model(inputs=[a, b], outputs=s) 

aa = np.array([[[1,1,1,1,1]]]) 
bb = np.array([[[3,3,3,3,3]]]) 

cc = model.predict({'a':aa, 'b':bb}) 
Verwandte Themen