#python-3.x #tensorflow #keras
#python-3.x #тензорный поток #keras
Вопрос:
Привет, недавно я начал с tensorflow и создал свою первую модель, но не смог ее оценить. Это мой код:
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
data = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = data.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
train_images = train_images / 255.0
test_images = train_images / 255.0
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(10, activation="softmax")
])
model.compile(optimizer="adam", loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=["accuracy"])
model.fit(train_images, train_labels, epochs=5)
test_loss, test_acc = model.evaluate(test_images, test_labels)
И это вывод со значением ошибки:
Epoch 1/5
2020-09-26 14:38:33.631511: I tensorflow/stream_executor/platform/default/dso_loader.cc:48] Successfully opened dynamic library cublas64_10.dll
1875/1875 [==============================] - 2s 957us/step - loss: 1.6860 - accuracy: 0.7844
Epoch 2/5
1875/1875 [==============================] - 2s 937us/step - loss: 1.6222 - accuracy: 0.8415
Epoch 3/5
1875/1875 [==============================] - 2s 934us/step - loss: 1.6076 - accuracy: 0.8556
Epoch 4/5
1875/1875 [==============================] - 2s 951us/step - loss: 1.6019 - accuracy: 0.8604
Epoch 5/5
1875/1875 [==============================] - 2s 945us/step - loss: 1.5943 - accuracy: 0.8679
Traceback (most recent call last):
File "C:/Users/mikele/Desktop/Python/tensor/NN.py", line 26, in <module>
test_loss, test_acc = model.evaluate(test_images, test_labels)
File "C:Usersmikeleanaconda3envstensorlibsite-packagestensorflowpythonkerasenginetraining.py", line 108, in _method_wrapper
return method(self, *args, **kwargs)
File "C:Usersmikeleanaconda3envstensorlibsite-packagestensorflowpythonkerasenginetraining.py", line 1344, in evaluate
data_handler = data_adapter.DataHandler(
File "C:Usersmikeleanaconda3envstensorlibsite-packagestensorflowpythonkerasenginedata_adapter.py", line 1105, in __init__
self._adapter = adapter_cls(
File "C:Usersmikeleanaconda3envstensorlibsite-packagestensorflowpythonkerasenginedata_adapter.py", line 282, in __init__
raise ValueError(msg)
ValueError: Data cardinality is ambiguous:
x sizes: 60000
y sizes: 10000
Please provide data which shares the same first dimension.
Если вы знаете, что является причиной этого или как это исправить, пожалуйста, поделитесь своими идеями.
Спасибо
Комментарии:
1. Это должно быть решено простой отладкой, даже при печати ваших данных вы увидите, что ваши тестовые данные меняют свой размер. Сообщение прямолинейно. Подумайте об этом в следующий раз, это сэкономит вам некоторое время.
Ответ №1:
import tensorflow as tf
from tensorflow import keras
import numpy as np
import matplotlib.pyplot as plt
data = keras.datasets.fashion_mnist
(train_images, train_labels), (test_images, test_labels) = data.load_data()
class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat',
'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']
train_images = train_images / 255.0
test_images = test_images / 255.0
model = keras.Sequential([
keras.layers.Flatten(input_shape=(28,28)),
keras.layers.Dense(128, activation="relu"),
keras.layers.Dense(10, activation="softmax")
])
model.compile(optimizer="adam", loss=keras.losses.SparseCategoricalCrossentropy(from_logits=True), metrics=["accuracy"])
model.fit(train_images, train_labels, epochs=5)
test_loss, test_acc = model.evaluate(test_images, test_labels)
test_images = test_images / 255.0
Это строка, в которой вы допустили ошибку
Если вы новичок в этой области, лучше используйте Spyder IDE. проверьте проводник переменных, чтобы найти измерение
Ответ №2:
Тестовый набор данных был заменен недопустимым кодом.
Ваш код (14 строка):
test_images = train_images / 255.0
Изменить так:
test_images = test_images / 255.0
и вы должны оценить этот код с помощью пошаговых инструкций:
model.fit(train_images, train_labels, epochs=5, validation_data=(test_images, test_labels))
Ответ №3:
Я уже понял это
Я написал там
test_images = train_images / 255.0
вместо
test_images = test_images / 255.0