Python 必须使用dtype float和shape[?,?,?,,?,?]为占位符张量输入一个值
我正在使用tensorflow 2.3.0版和tensorflow gpu 1.14.0版的类似UNet的模型(实际上是注意力UNet)。我在GPU中运行我的模型。它接受一个张量,填充它,最终在扩展路径将其裁剪到原始大小后,这样填充就被移除了(来自Keras的简化摘要): 。。。图层…( 我为训练集和验证集创建数据生成器,并编译模型。然后我将其与以下代码相匹配:Python 必须使用dtype float和shape[?,?,?,,?,?]为占位符张量输入一个值,python,numpy,tensorflow,keras,callback,Python,Numpy,Tensorflow,Keras,Callback,我正在使用tensorflow 2.3.0版和tensorflow gpu 1.14.0版的类似UNet的模型(实际上是注意力UNet)。我在GPU中运行我的模型。它接受一个张量,填充它,最终在扩展路径将其裁剪到原始大小后,这样填充就被移除了(来自Keras的简化摘要): 。。。图层…( 我为训练集和验证集创建数据生成器,并编译模型。然后我将其与以下代码相匹配: def run(self, load_weights: bool = False): config = tf.co
def run(self, load_weights: bool = False):
config = tf.compat.v1.ConfigProto(device_count={'GPU': 1})
config.gpu_options.allow_growth = True
config.log_device_placement=True
sess = tf.compat.v1.Session(config=config)
with sess as sess:
self.get_model()
print(self._model.summary())
self.initialise_datagenerator()
if load_weights:
self.get_weights()
callbacks = []
if with_callbacks:
earlystopper = EarlyStopping(patience = 5, verbose = 1, monitor = 'val_loss')
checkpointer = ModelCheckpoint('../../save/model', verbose = 1, monitor = 'val_loss', save_best_only= True,save_weights_only= True)
tb = TensorBoard(log_dir = '../../logs_tb/model', histogram_freq= 0, write_graph = True, write_grads = False, write_images = True)
callbacks.extend([earlystopper, checkpointer, tb])
print('Fitting started')
self._model.fit(self.training_generator, epochs = self._epochs, validation_data = self.validation_generator, callbacks = callbacks)
它确实成功地运行了第一个时代。但是,当它必须输出验证丢失时,它会抛出以下错误,这似乎与裁剪层有关。我自己也无法理解,因为它在训练中运行良好
Traceback (most recent call last):
File "/XXX/XXX/XXX/XXX/XXX/XXX/training/train_script.py", line 27, in <module>
t.run()
File "/XXX/XXX/XXX/XXX/XXX/XXX/model/train.py", line 243, in run
self._model.fit(self.training_generator, epochs = self._epochs, validation_data = self.validation_generator, callbacks = callbacks)
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_v1.py", line 809, in fit
use_multiprocessing=use_multiprocessing)
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_generator.py", line 590, in fit
steps_name='steps_per_epoch')
File "/home/kdqm927/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_generator.py", line 310, in model_iteration
steps_name='validation_steps')
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_generator.py", line 256, in model_iteration
batch_outs = batch_function(*batch_data)
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/engine/training_v1.py", line 1165, in test_on_batch
outputs = self.test_function(inputs) # pylint: disable=not-callable
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/keras/backend.py", line 3825, in __call__
run_metadata=self.run_metadata)
File "/home/XXX/miniconda3/envs/segment/lib/python3.7/site-packages/tensorflow/python/client/session.py", line 1472, in __call__
run_metadata_ptr)
tensorflow.python.framework.errors_impl.InvalidArgumentError: You must feed a value for placeholder tensor 'cropping3d_target' with dtype float and shape [?,?,?,?,?]
[[{{node cropping3d_target}}]]
回溯(最近一次呼叫最后一次):
文件“/XXX/XXX/XXX/XXX/XXX/training/train_script.py”,第27行,在
t、 运行()
文件“/XXX/XXX/XXX/XXX/XXX/model/train.py”,第243行,运行中
self.\u model.fit(self.training\u generator,epochs=self.\u epochs,validation\u data=self.validation\u generator,callbacks=callbacks)
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/engine/training_v1.py”,第809行,适合
使用多处理=使用多处理)
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/engine/training_generator.py”,第590行
步骤(名称=“每个时代的步骤”)
文件“/home/kdqm927/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/engine/training_generator.py”,第310行,在模型迭代中
步骤(name='validation')
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/engine/training\u generator.py”,第256行,在模型迭代中
批处理输出=批处理功能(*批处理数据)
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/engine/training\u v1.py”,第1165行,批量测试
输出=自测试功能(输入)#pylint:disable=不可调用
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/keras/backend.py”,第3825行,在__
run\u元数据=self.run\u元数据)
文件“/home/XXX/miniconda3/envs/segment/lib/python3.7/site packages/tensorflow/python/client/session.py”,第1472行,在__
运行_元数据_ptr)
tensorflow.python.framework.errors\u impl.InvalidArgumentError:必须为带有数据类型float和形状[?,?,,,?,,?,?]的占位符tensor“cropping3d\u target”提供一个值
[{{node croping3d_target}}]]