Тренинг модели Tensorflow: отсутствует 1 обязательный позиционный аргумент: 'self' - PullRequest
0 голосов
/ 28 февраля 2019

Я пытаюсь попрактиковаться в классификаторе нейронной сети по примеру Тренируйте свою первую нейронную сеть: базовая классификация , и вот мой код до момента обучения модели:

import tensorflow as tf
from tensorflow import keras

import numpy as np
from matplotlib.pyplot import show
import matplotlib.pyplot as plt

from matplotlib.pyplot import figure
from matplotlib.pyplot import imshow
from matplotlib.pyplot import colorbar
from matplotlib.pyplot import axis
from matplotlib.pyplot import plot
from matplotlib.pyplot import show

print(tf.__version__)

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()


#figure(); imshow(train_images[1]); colorbar(); axis('auto') 

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

N1, N2, N3 = test_images.shape

train_images = train_images / 255.0
test_images  = test_images / 255.0

model = keras.Sequential
([
    keras.layers.Flatten(input_shape=(N2, N3)),
    keras.layers.Dense(128, activation=tf.nn.relu),
    keras.layers.Dense(10, activation=tf.nn.softmax)
])


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


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

Возвращает ошибку

TypeError: _method_wrapper() missing 1 required positional argument: 'self'

, которая происходит при

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

Я немного погуглил, кажется

m = model()
m.compile()

может избежать ошибки 'self',Тем не менее, он получает новую ошибку, что обучение по-прежнему не происходит.

Мне просто интересно, как мне изменить код так, чтобы я мог заставить модель тренироваться так:

Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-labels-idx1-ubyte.gz
32768/29515 [=================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/train-images-idx3-ubyte.gz
26427392/26421880 [==============================] - 1s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-labels-idx1-ubyte.gz
8192/5148 [===============================================] - 0s 0us/step
Downloading data from https://storage.googleapis.com/tensorflow/tf-keras-datasets/t10k-images-idx3-ubyte.gz
4423680/4422102 [==============================] - 0s 0us/step

1 Ответ

0 голосов
/ 28 февраля 2019

Сделаны некоторые небольшие изменения в вашем коде.Надеюсь, ты сможешь продолжить.Вместо того, чтобы добавлять слои внутри Sequential(), я просто вынул все и добавил слой за слоем к model.

import tensorflow as tf
from tensorflow import keras
from keras.models import Sequential
from keras.layers import Dense
import numpy as np
from matplotlib.pyplot import show
import matplotlib.pyplot as plt

from matplotlib.pyplot import figure
from matplotlib.pyplot import imshow
from matplotlib.pyplot import colorbar
from matplotlib.pyplot import axis
from matplotlib.pyplot import plot
from matplotlib.pyplot import show

print(tf.__version__)

fashion_mnist = keras.datasets.fashion_mnist

(train_images, train_labels), (test_images, test_labels) = fashion_mnist.load_data()


#figure(); imshow(train_images[1]); colorbar(); axis('auto') 

class_names = ['T-shirt/top', 'Trouser', 'Pullover', 'Dress', 'Coat', 
               'Sandal', 'Shirt', 'Sneaker', 'Bag', 'Ankle boot']

N1, N2, N3 = test_images.shape

train_images = train_images / 255.0
test_images  = test_images / 255.0
# model = Sequential
# ([
#     keras.layers.Flatten(input_shape=(N2, N3)),
#     keras.layers.Dense(128, activation=tf.nn.relu),
#     keras.layers.Dense(10, activation=tf.nn.softmax)
# ])

model= Sequential()
model.add(Dense(128, activation=tf.nn.relu))
model.add(Dense(10, activation=tf.nn.softmax))

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


model.fit(train_images.reshape(len(train_images),784), train_labels, epochs=5)

С этим кодом он работает, как показано ниже.

32/60000 [..............................] - ETA: 3:02 - потери: 2,6468 - акк: 0

1344/60000 [..............................] - ETA: 6 с - потеря:1,3037 - согласно: 0,5

2816/60000 [> .............................] - ETA: 4s- потери: 1,0207 - согласно: 0,6

4256/60000 [=> ............................] -ETA: 3 с - потери: 0,9073 - в соотв. 0,6

5632/60000 [=> ............................] - ETA: 2 с - потери: 0,8394 - в соотв. 0,7

7104/60000 [==> ...........................] - ETA: 2 с - потери: 0,7912 - в соотв. 0,7

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...