Ошибка при сборке Tenorflow учебник Google - PullRequest
0 голосов
/ 20 апреля 2019

Я новичок в tenorflow. Я не могу построить учебник Google TenorFlow от TenorFlow 2.0. Вот эта страница https://www.tensorflow.org/alpha/tutorials/keras/basic_classification Я не могу загрузить данные из Google. Поэтому я загружаю данные в локальную систему и использую mnist_reader для чтения данных. И я проверил вывод mnist_reader, размер изображения правильный (28 * 28).

def load_mnist(path, kind='train'):
import os
import gzip
import numpy as np

"""Load MNIST data from `path`"""
labels_path = os.path.join(path,
                           '%s-labels-idx1-ubyte.gz'
                           % kind)
images_path = os.path.join(path,
                           '%s-images-idx3-ubyte.gz'
                           % kind)

with gzip.open(labels_path, 'rb') as lbpath:
    labels = np.frombuffer(lbpath.read(), dtype=np.uint8,
                           offset=8)

with gzip.open(images_path, 'rb') as imgpath:
    images = np.frombuffer(imgpath.read(), dtype=np.uint8,
                           offset=16).reshape(len(labels), 28, 28)

return images, labels

Существует исключение для model.fit.

PS G:\LearningTensorflow\Google> & C:/ProgramData/Anaconda3/envs/tensor2flow/python.exe g:/LearningTensorflow/Google/MLBasics.py
2.0.0-alpha0
2019-04-20 10:46:11.350824: I tensorflow/core/platform/cpu_feature_guard.cc:142] Your CPU supports instructions that this TensorFlow binary was not compiled to use: AVX2
Traceback (most recent call last):
  File "g:/LearningTensorflow/Google/MLBasics.py", line 60, in <module>
    model.fit(train_images, train_labels, epochs=5)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\keras\engine\training.py", line 873, in fit
    steps_name='steps_per_epoch')
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\keras\engine\training_arrays.py", line 239, in model_iteration
    model.reset_metrics()
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\keras\engine\training.py", line 1173, in reset_metrics
    m.reset_states()
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\keras\metrics.py", line 199, in reset_states
    K.batch_set_value([(v, 0) for v in self.variables])
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\keras\backend.py", line 2880, in batch_set_value
    x.assign(np.asarray(value, dtype=dtype(x)))
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\ops\resource_variable_ops.py", line 1053, in assign
    value_tensor = ops.convert_to_tensor(value, dtype=self.dtype)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\ops.py", line 1050, in convert_to_tensor
    return convert_to_tensor_v2(value, dtype, preferred_dtype, name)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\ops.py", line 1108, in convert_to_tensor_v2
    as_ref=False)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\ops.py", line 1186, in internal_convert_to_tensor
    ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\constant_op.py", line 304, in _constant_tensor_conversion_function
    return constant(v, dtype=dtype, name=name)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\constant_op.py", line 245, in constant
    allow_broadcast=True)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\constant_op.py", line 253, in _constant_impl
    t = convert_to_eager_tensor(value, ctx, dtype)
  File "C:\ProgramData\Anaconda3\envs\tensor2flow\lib\site-packages\tensorflow\python\framework\constant_op.py", line 114, in convert_to_eager_tensor
    **return ops.EagerTensor(value, handle, device, dtype)
ValueError: TypeError: len() of unsized object**

from __future__ import absolute_import, division, print_function, unicode_literals

import tensorflow as tf
from tensorflow import keras

import numpy as np
import matplotlib.pyplot as plt

import mnist_reader

print(tf.__version__)

train_images, train_labels = mnist_reader.load_mnist('data/fashion', kind='train')
test_images, test_labels = mnist_reader.load_mnist('data/fashion', kind='t10k')

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

train_labels = train_labels * 1
test_labels = test_labels * 1



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='sparse_categorical_crossentropy',
    metrics=['accuracy'])

model.fit(train_images, train_labels, epochs=5)

test_loss, test_acc = model.evaluate(test_images, test_labels)
print('\nTest accuracy:', test_acc)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...