我正在尝试使用keras创建一个CNN来处理来自600x600的更大图像的20x20补丁。
当我尝试运行下面的代码时,我收到错误 AttributeError:' Tensor'对象没有属性' _keras_history'
以下代码仅用于查看总共900个中的第一个20 x 20补丁,我试图在尝试循环整个输入图像之前使其正常运行。
我不明白为什么它会返回错误,因为每个图层都是使用keras图层生成的,而我还没有对张量应用任何其他操作?
我正在使用tensorflow 1.3和keras 2.0.6。
nb_filters=16
input_image=Input(shape=(600,600,3))
Input_1R=Reshape((900,20,20,3))(input_image)
conv1=Convolution2D(nb_filters,(5,5),activation='relu',padding='valid')(Input_1R[:,0])
conv4=Convolution2D(1,(6,6),activation='hard_sigmoid',padding='same')(conv1)
dense6=Dense(1)(conv4)
output_dense=dense6
model = Model(inputs=input_image, outputs=output_dense)
答案 0 :(得分:1)
发生错误是因为切片操作Input_1R[:,0]
未在Keras层中执行。
您可以将其包装到Lambda
图层中:
sliced = Lambda(lambda x: x[:, 0])(Input_1R)
conv1 = Convolution2D(nb_filters, (5,5), activation='relu', padding='valid')(sliced)