2017-04-24 97 views
0

我試圖用重塑層重塑張量:keras不能重塑keras tesnor使用重塑

from keras.layers.convolutional import Conv2D, MaxPooling2D,AveragePooling2D 
from keras import backend as K 
from keras.models import Model 
from keras.layers import Input 
from keras.layers.core import Activation, Reshape 
from keras.layers import Dense,Reshape,Lambda,Dropout 
import numpy as np 
from keras.layers.embeddings import Embedding 
Dict_size=32 
EmbedSz=16 
img_sz=100 
channels=3 
input=Input(shape=(img_sz,img_sz,channels)) 
H=Conv2D(Dict_size, 3, 3, activation='relu', border_mode='same')(input) 
H=Lambda(lambda x:K.argmax(x, axis=3),output_shape=lambda s: (img_sz,img_sz,))(H) 
H=Reshape((1,img_sz*img_sz))(H) 
model=Model(inputs=input,outputs=H) 
#model.compile(optimizer= 'adam', metrics=[ 'accuracy' ],loss='mse') 
ar=np.random.rand(1,100,100,3) 
pr=model.predict(ar) 
print(pr.shape) 
print(pr)$ 

但得到這個錯誤! 文件「/usr/local/lib/python2.7/dist-packages/keras/layers/core.py」,第379行,在_fix_unknown_dimension中 raise ValueError(msg) ValueError:新數組的總大小必須保持不變


我沒有改變大小!

回答

0

你只是忘了批量大小的尺寸添加到您的LAMBDA層:

H= Lambda(lambda x: K.argmax(x, axis=3), output_shape=lambda s: (None, img_sz,img_sz,))(H) 
#                ^
#                 | 

所以,只需添加None到output_shape。