에러 것으로 예상 dense_11를 해결하는 방법 : 점검 대상 때4 차원 내가 Keras와 길쌈 신경 네트워크를 구축 한 일부 오류가있어
오류 : 예상 dense_11 4 개 차원을 가지고, 하지만 배열을 가지고 모양 (48986, 12)
나는 지식이 부족하기 때문에 무엇을 고쳐야할지 전혀 모른다. 누군가 이유를 설명하고 해결책을 제안 할 수 있습니까?
input_shape = (99, 81, 1)
nclass = 12
model = Sequential()
model.add(Dense(32, input_shape=input_shape))
model.add(Convolution2D(8,3,3,activation='relu'))
model.add(MaxPooling2D((2,2), strides=(2,2)))
model.add(Dense(128, activation='relu'))
model.add(Dense(128, activation='relu'))
model.add(Dense(nclass, activation='softmax'))
x_train, x_valid, y_train, y_valid = train_test_split(x_train, y_train, test_size=0.1, random_state=2017)
#vgg
batch_size = 128
nb_epoch = 1
model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['accuracy'])
#model.fit(x_train,y_train,nb_epoch= nb_epoch,batch_size = batch_size , validation_split=0.1)
model.fit(x_train, y_train, batch_size=16, validation_data=(x_valid, y_valid), epochs=3, shuffle=True, verbose=2)
model.save(os.path.join(model_path, 'vgg16.model'))
x_train
는 형상을 갖고 (99, 81, 1) 및 nclass
출력 12
이어야한다. 다시 오류에
maxpool layer error가 나간 후에 납작하게 부탁드립니다. 하지만 CNN에서 왜 평평하게하는지 이해하지 못하고 왜 maxpool 이후에 추가해야하는지, 내 문제를 해결하는 이유는 무엇입니까 –
모델 요약에 따르면 (코드에 model.summary()를 작성하여 인쇄 할 수 있습니다) MaxPool 레이어 ** ** (없음, 48, 39, 8) **. Flatten은 각 입력을 받아 1D 배열로 바꿉니다. 귀하의 경우 Flatten은 (None, 48 * 39 * 8) = (None, 14976)을 출력합니다. Dense 레이어는 각 14976 노드에서 "작동"하므로 최종 출력은 원하는대로 (None, nclass)가됩니다. Flatten을 사용하지 않으면 조밀 한 레이어가 내 답변에서 볼 수있는 것처럼 출력됩니다 (None, 48, 39, nclass). 원하는 것은 아닙니다. 희망을 이해하는 데 도움이 .. 내 대답을 받아 들일 수 있다면 upvode :) –
@ Kimsangwon 답변이 문제를 해결했기 때문에 친절하게 받아들입니다 (응답은 응답자에게 귀중한 시간을 차지합니다) – desertnaut