Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/tensorflow/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 在Tensorflow中执行model.fit时出现类型错误_Python_Tensorflow_Keras_Deep Learning - Fatal编程技术网

Python 在Tensorflow中执行model.fit时出现类型错误

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

我研究了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.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)