I created a CIFAR10 dataset learning model using a CNN model. Why is there an error? How should I fix it? I did it in Google colab environment.
JavaScript
x
86
86
1
import tensorflow as tf
2
import keras
3
from keras.models import Sequential
4
from keras.layers import Conv2D, MaxPooling2D, Dropout, Flatten, Dense
5
from keras.datasets import cifar10
6
7
LOSS = 'categorical_crossentropy'
8
OPTIMIZER = 'adam'
9
10
def model_build():
11
model = Sequential()
12
13
# 1
14
model.add(Conv2D(
15
filters=32,
16
kernel_size=(5,5),
17
padding='same',
18
activation='relu',
19
input_shape=(32,32,3),
20
kernel_regularizer='l2',
21
))
22
model.add(MaxPooling2D(
23
pool_size=(2,2),
24
padding='same'
25
))
26
27
# 2
28
model.add(Conv2D(
29
filters=64,
30
kernel_size=(5,5),
31
padding='same',
32
activation='relu',
33
kernel_regularizer='l2',
34
))
35
model.add(MaxPooling2D(
36
pool_size=(2,2),
37
padding='same'
38
))
39
40
# 3
41
model.add(Flatten())
42
model.add(Dense(
43
units=512,
44
activation='relu',
45
kernel_regularizer='l2',
46
))
47
48
# 4
49
model.add(Dense(
50
units=10,
51
activation='softmax'
52
))
53
54
model.compile(
55
loss=LOSS,
56
optimizer=OPTIMIZER,
57
metrics=['accuracy']
58
)
59
60
return model
61
62
def load_dataset():
63
(X_train, Y_train), (X_test, Y_test) = cifar10.load_data()
64
65
X_train = X_train.astype('float32')
66
X_test = X_test.astype('float32')
67
X_train = X_train / 255.0
68
X_test = X_test / 255.0
69
70
return (X_train, Y_train), (X_test, Y_test)
71
72
model = model_build()
73
(X_train, Y_train), (X_test, Y_test) = load_dataset()
74
75
model.fit(
76
x=X_train, y=Y_train,
77
epochs=10,
78
batch_size=32,
79
verbose=1,
80
)
81
82
model.evaluate(
83
x=X_test, y=Y_test,
84
verbose=1,
85
)
86
This error occurred to me
ValueError Traceback (most recent call last) in ()
JavaScript16177 epochs=10,
278 batch_size=32,
379 verbose=1, <------Error
480 )
581
6
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/func_graph.py in wrapper(*args, **kwargs)
JavaScript161975 except Exception as e: # pylint:disable=broad-except
2976 if hasattr(e, "ag_error_metadata"):
3977 raise e.ag_error_metadata.to_exception(e) <---Error
4978 else:
5979 raise
6
ValueError: in user code:
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:805 train_function * return step_function(self, iterator)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:795 step_function ** outputs = model.distribute_strategy.run(run_step, args=(data,))
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:1259 run return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:2730 call_for_each_replica return self._call_for_each_replica(fn, args, kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/distribute/distribute_lib.py:3417 _call_for_each_replica return fn(*args, **kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:788 run_step ** outputs = model.train_step(data)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py:756 train_step y, y_pred, sample_weight, regularization_losses=self.losses)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/compile_utils.py:203 __call__ loss_value = loss_obj(y_t, y_p, sample_weight=sw)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:152 __call__ losses = call_fn(y_true, y_pred)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:256 call ** return ag_fn(y_true, y_pred, **self._fn_kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper return target(*args, **kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/losses.py:1537 categorical_crossentropy return K.categorical_crossentropy(y_true, y_pred, from_logits=from_logits)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/dispatch.py:201 wrapper return target(*args, **kwargs)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/backend.py:4833 categorical_crossentropy target.shape.assert_is_compatible_with(output.shape)
2
JavaScript121/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_shape.py:1134 assert_is_compatible_with raise ValueError("Shapes %s and %s are incompatible" % (self, other))
2
JavaScript121ValueError: Shapes (None, 1) and (None, 10) are incompatible
2
Thank you for your answering.
Advertisement
Answer
I think that your labels are integers not one-hot vectors and its shape is (None, 1).
Try:
JavaScript
1
2
1
LOSS = 'sparse_categorical_crossentropy'
2