这是我第一次使用神经网络。拟合我的代码后,出现此错误:
logit和标签必须具有相同的第一尺寸,logits形状为[4,4096],标签形状为[16384] [[node loss / activation_27_loss / SparseSoftmaxCrossEntropyWithLogits / SparseSoftmaxCrossEntropyWithLogits(在C:\ Users \ admin \ Miniconda3 \ lib \ site-packages \ tensorflow_core \ python \ framework \ ops.py:1751定义)]] [操作:__ inference_distributed_function_8265]函数调用堆栈:分布式功能
您能帮我为什么出现此错误,这是我的代码:
batch_size = 5
learning_rate = 0.8
no_classes = 1
no_epochs = 3
validation_split = 0.2
verbosity = 0
import tensorflow as tf
import tensorflow.python.keras
from tensorflow.python.keras.models import Sequential
from tensorflow.python.keras.layers import Input
from tensorflow.python.keras.preprocessing.image import ImageDataGenerator
from tensorflow.python.keras.layers import Dense, Dropout, Activation, Flatten
from tensorflow.python.keras.layers import Conv2D, MaxPooling2D
from os import listdir
from os.path import isfile, join
import pickle
from tensorflow.python.keras.utils import to_categorical
from tensorflow.python.keras import backend as K
from tensorflow.python.keras.layers.normalization import BatchNormalization
pickle_in = open("X.pickle","rb")
X= pickle.load(pickle_in)
pickle_in = open("Y.pickle","rb")
Y = pickle.load(pickle_in)
# Y=Y/255
img_rows=img_cols=64
if K.image_data_format()== 'channels_first':
X = np.array(X).reshape(np.array(X).shape[0], 1, img_rows, img_cols)
Y= np.array(Y).reshape(np.array(Y).shape[0], 1, img_rows, img_cols)
print(X.shape)
print(Y.shape)
input_shape = (1, img_rows, img_cols)
else:
X = np.array(X).reshape(np.array(X).shape[0], img_rows, img_cols, 1)
Y = np.array(Y).reshape(np.array(Y).shape[0], img_rows, img_cols, 1)
input_shape = (img_rows, img_cols,1)
print(X.shape)
print(Y.shape)
print(input_shape)
model = Sequential()
model.add(Conv2D(64, (3, 3),input_shape=input_shape,padding="same"))
model.add(Activation('relu'))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Conv2D(64, (3, 3)))
model.add(Activation('relu'))
model.add(MaxPooling2D(pool_size=(2, 2)))
model.add(Flatten())
model.add(Dense(64*64))
model.add(Activation('relu'))
model.summary()
model.compile(loss=tensorflow.keras.losses.sparse_categorical_crossentropy,
optimizer=tensorflow.keras.optimizers.Adam(),
metrics=['accuracy'])
model.fit(X,Y,
batch_size=5,
epochs=no_epochs,
verbose=verbosity,
validation_split=validation_split)
score = model.evaluate(X,Y, batch_size=5)
我不知道该如何处理这个错误
由于使用sparse_categorical_crossentropy
丢失功能而发生错误,请用categorical_crossentropy
替换。
请在下面替换您的model.complie
块
model.compile(loss=tensorflow.keras.losses.categorical_crossentropy,
optimizer=tensorflow.keras.optimizers.Adam(),
metrics=['accuracy'])