我正在尝试按照Train your first neural network: basic classification的例子练习神经网络分类器,这是我的代码,直到模型训练点:
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'])
我用google搜索了一下,似乎
m = model()
m.compile()
可以避免'自我'错误。然而,它得到了新的错误,训练仍然没有发生。
我只是想知道我应该如何修改代码,以便我可以让模型像这样训练:
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
对您的代码进行了一些细微的修改。希望你能跟进。我没有在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 - acc:0
1344/60000 [..............................] - ETA:6s - 损失:1.3037 - acc:0.5
2816/60000 [> .............................] - ETA:4s - 损失:1.0207 - acc:0.6
4256/60000 [=> ............................] - ETA:3s - 损失:0.9073 - acc:0.6
5632/60000 [=> ............................] - ETA:2s - 损失:0.8394 - acc:0.7
7104/60000 [==> ...........................] - ETA:2s - 损失:0.7912 - acc:0.7