Python 在Tensorflow中执行model.fit时出现类型错误
我研究了tensorflow和下面的错误 keras版本是2.2.4-tf,Python版本是3.7.4 操作系统是windows10 我建立了tensorflow模型,模型学习时会出现错误Python 在Tensorflow中执行model.fit时出现类型错误,python,tensorflow,keras,deep-learning,Python,Tensorflow,Keras,Deep Learning,我研究了tensorflow和下面的错误 keras版本是2.2.4-tf,Python版本是3.7.4 操作系统是windows10 我建立了tensorflow模型,模型学习时会出现错误 import tensorflow as tf from tensorflow.keras import layers from tensorflow.keras import datasets (train_x, train_y), (test_x, test_y) = datasets.mnist.lo
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras import datasets
(train_x, train_y), (test_x, test_y) = datasets.mnist.load_data()
inputs = layers.Input((28, 28, 1))
net = layers.Conv2D(32, (3, 3), padding='SAME')(inputs)
net = layers.Activation('relu')(net)
net = layers.Conv2D(32, (3, 3), padding='SAME')(net)
net = layers.Activation('relu')(net)
net = layers.MaxPooling2D(pool_size=(2, 2))(net)
net = layers.Dropout(0.25)(net)
net = layers.Flatten()(net)
net = layers.Dense(512)(net)
net = layers.Activation('relu')(net)
net = layers.Dropout(0.5)(net)
net = layers.Dense(10)(net) # num_classes
net = layers.Activation('softmax')(net)
model = tf.keras.Model(inputs=inputs, outputs=net, name='Basic_CNN')
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss='sparse_categorical_crossentropy',
metrics=[tf.keras.metrics.Accuracy()])
train_x = train_x[..., tf.newaxis]
test_x = test_x[..., tf.newaxis]
num_epochs = 1
batch_size = 32
model.fit(train_x, train_y,
batch_size=batch_size,
shuffle=True,
epochs=num_epochs)
下面是运行model.fit时出现的错误
看来学习不可能完全完成
上面的代码有什么问题
Train on 60000 samples
32/60000 [..............................] - ETA: 11s
---------------------------------------------------------------------------
TypeError Traceback (most recent call last)
<ipython-input-24-fea17f92bc8b> in <module>
2 batch_size=batch_size,
3 shuffle=True,
----> 4 epochs=1)
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training.py in
fit(self, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data, shuffle,
class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps, validation_freq,
max_queue_size, workers, use_multiprocessing, **kwargs)
817 max_queue_size=max_queue_size,
818 workers=workers,
--> 819 use_multiprocessing=use_multiprocessing)
820
821 def evaluate(self,
C:\ProgramData\Anaconda3\lib\site-packages\tensorflow_core\python\keras\engine\training_v2.py in
fit(self, model, x, y, batch_size, epochs, verbose, callbacks, validation_split, validation_data,
shuffle, class_weight, sample_weight, initial_epoch, steps_per_epoch, validation_steps,
validation_freq, max_queue_size, workers, use_multiprocessing, **kwargs)
340 mode=ModeKeys.TRAIN,
341 training_context=training_context,
--> 342 total_epochs=epochs)
343 cbks.make_logs(model, epoch_logs, training_result, ModeKeys.TRAIN)
344
TypeError: 'NoneType' object is not callable
我相信你正在搞乱重塑你的输入示例点 尝试执行以下代码中的操作: 您的型号: 重塑您的输入: 如果未完成输出,还应进行一次热编码: 培训您的模特:
我相信这会起作用。上面的代码有什么问题?没有什么问题就在上面的某个地方,您可以在这里定义模型和/或培训数据。显示代码。抱歉,这是我的第一个堆栈溢出问题。所以,我犯了错误。我编辑了我的问题。谢谢。您能检查一下train_x,train_y,test_x,test_y是否确实包含线路train_x,train_y,test_x,test_y=datasets.mnist.load_data之后的数据吗?还有,它们的形状是什么?对的,它们实际上包含数据,并且train_x.shape是60000,28,28,1,train_y.shape是60000,,test_x.shape是10000,28,28,1,test_y.shape是10000,好的!你能详细说明一下为什么train_x=train_x[…,tf.newaxis]?图像数据似乎已经具有正确的形状,尽管对于标签,我认为您需要对其进行一次热编码,我认为没有必要在图像的末尾附加额外的维度。首先,感谢您的回答。很抱歉,出现了类似的错误,上面写着ValueError:形状32,10和32,1是不兼容的。环境设置是否有可能是错误的??嗯@박남선 您能分享完整的堆栈跟踪吗?如果您正在尝试的数据集是mnist,并且您没有使用其他具有不同维度的数据集,请告诉我input@TayyabOP不是一个应该进行的标签热编码。这是第二个问题的根源error@GPhilo我还添加了一个热编码标签的一部分,谢谢你指出@박남선 正如GPhillo指出的,一旦您对标签进行热编码,您的其他错误现在也将得到解决
import tensorflow as tf
from tensorflow.keras import layers
from tensorflow.keras import datasets
(train_x, train_y), (test_x, test_y) = datasets.mnist.load_data()
inputs = layers.Input((28, 28, 1))
net = layers.Conv2D(32, (3, 3), padding='SAME')(inputs)
net = layers.Activation('relu')(net)
net = layers.Conv2D(32, (3, 3), padding='SAME')(net)
net = layers.Activation('relu')(net)
net = layers.MaxPooling2D(pool_size=(2, 2))(net)
net = layers.Dropout(0.25)(net)
net = layers.Flatten()(net)
net = layers.Dense(512)(net)
net = layers.Activation('relu')(net)
net = layers.Dropout(0.5)(net)
net = layers.Dense(10)(net) # num_classes
net = layers.Activation('softmax')(net)
model = tf.keras.Model(inputs=inputs, outputs=net, name='Basic_CNN')
model.compile(optimizer=tf.keras.optimizers.Adam(),
loss='sparse_categorical_crossentropy',
metrics=[tf.keras.metrics.Accuracy()])
X = train_x.reshape([-1,28,28,1])#reshaping as per your model input dimensions
Y= tf.keras.utils.to_categorical(train_y, 10)
num_epochs = 1
batch_size = 32
model.fit(X, Y,
batch_size=batch_size,
shuffle=True,
epochs=num_epochs)