我正在尝试按照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
答案 0 :(得分:0)
对您的代码做了一些小的修改。希望您能跟进。我没有将所有内容都添加到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:6秒-损失:1.3037- acc:0.5
2816/60000 [> ......................................]-ETA:4秒-损失:1.0207- acc:0.6
4256/60000 [=> .....................................]-ETA:3秒-损失:0.9073- acc:0.6
5632/60000 [=> .....................................]-ETA:2秒-损失:0.8394- acc:0.7
7104/60000 [==> ....................................]-ETA:2秒-损失:0.7912- acc:0.7