Логиты и метки должны иметь одинаковое первое измерение, иметь форму логитов [32,1] и форму меток [80000] - PullRequest
0 голосов
/ 01 апреля 2020

Я не могу запустить эту часть логитов ноутбука, и метки должны иметь одно и то же первое измерение, полученную форму логитов [32,1] и форму меток [80000] [[{{node loss_2 / активации_8_loss / SparseSoftmaxCrossEntropyWithLogits / SparseSoftmaxCrossEntropyWithLogits }}]] это продолжается

enter code here import tensorflow as tf

enter code here from tensorflow.keras.datasets import cifar10

enter code here from tensorflow.keras.preprocessing.image import ImageDataGenerator

enter code here from tensorflow.keras.models import Sequential

from tensorflow.keras.layers import Dense, Dropout, Activation, Flatten

from tensorflow.keras.layers import Conv2D, MaxPooling2D

import pickle

pickle_in = open("X.pickle","rb")
X = pickle.load(pickle_in)

pickle_in = open("y.pickle","rb")
y = pickle.load(pickle_in)

X = X/255.0

model = Sequential()

model.add(Conv2D(256, (3, 3), input_shape=X.shape[1:]))

model.add(Activation('relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Conv2D(256, (3, 3)))

model.add(Activation('relu'))

model.add(MaxPooling2D(pool_size=(2, 2)))

model.add(Flatten())
  # this converts our 3D feature maps to 1D feature vectors
model.add(Dense(64))

model.add(Dense(1))

model.add(Activation('sigmoid'))

model.compile(loss='sparse_categorical_crossentropy',
              optimizer='adam',
              metrics=['categorical_accuracy'])

model.fit(X, y, batch_size=32, epochs=3, validation_split=0.3)

1 Ответ

0 голосов
/ 01 апреля 2020

В вашем последнем плотном слое есть один нейрон, за которым следует слой активации сигмовидной кишки. Это означает, что вы делаете бинарную классификацию. Поэтому вы должны скомпилировать следующее:

model.compile(loss='binary_crossentropy',
              optimizer='adam',
              metrics=['binary_accuracy'])
...