我是Keras的新手,但据我了解,可以使用2输入和1输出制作网络。我正在尝试比较两个图像并在输出层中获取相机移动。这是我的代码
model1 = Sequential()
model1.add(Conv2D(64, (3, 3), activation='softmax', input_shape=(64, 64, 3)))
model1.add(Conv2D(64, (3, 3), activation='softmax'))
model1.add(MaxPooling2D(pool_size=(2, 2)))
model1.add(Dropout(0.5))
model1.add(Flatten())
model1.add(Dense(64))
model2 = Sequential()
model2.add(Conv2D(64, (3, 3), activation='softmax', input_shape=(64, 64, 3)))
model2.add(Conv2D(64, (3, 3), activation='softmax'))
model2.add(MaxPooling2D(pool_size=(2, 2)))
model2.add(Dropout(0.5))
model2.add(Flatten())
model2.add(Dense(64))
merged = Merge([model1, model2], mode='concat', concat_axis=-1)
model = Sequential()
model.add(merged)
model.add(Dropout(0.5))
model.add(Dense(1024, activation='softmax'))
model.add(Dropout(0.5))
model.add(Dense(3, activation='softmax'))
sgd = SGD(lr=0.001, decay=1e-6, momentum=0.5, nesterov=True)
model.compile(loss='mean_squared_error', optimizer=sgd)
model.fit([X1, X2], Y, batch_size=32, epochs=100,callbacks=[callback])
X1和X2是两个图像列表。我希望找到从X1 [i]到X2 [i]
的移动Y是这样的:
Y = np.array([[0.12, 0, 0.6],
[0.4, 0, 0.6],
[0.6, 0.17, 0],...
它训练得很好,但结果对所有输入数据都是固定的 ,例如:
[[ 0.26296708 0.38299543 0.35403749]
[ 0.26296708 0.38299543 0.35403746]
[ 0.26296708 0.38299543 0.35403746],...]
任何想法?