如何解决ValueError:''检查模型目标时发生错误:预期没有数据,但是得到了
我正在使用voxel(32,32,32)进行3D-VAE。在我看来,这没有问题,但我一直遇到错误。我尝试了TensorFlow 2.0、2.1和2.2版本中的所有内容。
这是VAE模型。
def get_model():
enc_in = Input(shape = input_shape)
enc_conv1 = BatchNormalization()(
Conv3D(
filters = 8,kernel_size = (3,3,3),strides = (1,1,1),padding = 'valid',kernel_initializer = 'glorot_normal',activation = 'elu',data_format = 'channels_first')(enc_in))
enc_conv2 = BatchNormalization()(
Conv3D(
filters = 16,strides = (2,2,2),padding = 'same',data_format = 'channels_first')(enc_conv1))
enc_conv3 = BatchNormalization()(
Conv3D(
filters = 32,data_format = 'channels_first')(enc_conv2))
enc_conv4 = BatchNormalization()(
Conv3D(
filters = 64,data_format = 'channels_first')(enc_conv3))
enc_fc1 = BatchNormalization()(
Dense(
units = 343,activation = 'elu')(Flatten()(enc_conv4)))
mu = BatchNormalization()(
Dense(
units = z_dim,activation = None)(enc_fc1))
sigma = BatchNormalization()(
Dense(
units = z_dim,activation = None)(enc_fc1))
z = Lambda(
sampling,output_shape = (z_dim,))([mu,sigma])
encoder = Model(enc_in,[mu,sigma,z])
dec_in = Input(shape = (z_dim,))
dec_fc1 = BatchNormalization()(
Dense(
units = 343,activation = 'elu')(dec_in))
dec_unflatten = Reshape(
target_shape = (1,7,7))(dec_fc1)
dec_conv1 = BatchNormalization()(
Conv3DTranspose(
filters = 64,data_format = 'channels_first')(dec_unflatten))
dec_conv2 = BatchNormalization()(
Conv3DTranspose(
filters = 32,data_format = 'channels_first')(dec_conv1))
dec_conv3 = BatchNormalization()(
Conv3DTranspose(
filters = 16,data_format = 'channels_first')(dec_conv2))
dec_conv4 = BatchNormalization()(
Conv3DTranspose(
filters = 8,kernel_size = (4,4,4),data_format = 'channels_first')(dec_conv3))
dec_conv5 = BatchNormalization(
beta_regularizer = l2(0.001),gamma_regularizer = l2(0.001))(
Conv3DTranspose(
filters = 1,data_format = 'channels_first')(dec_conv4))
decoder = Model(dec_in,dec_conv5)
dec_conv5 = decoder(encoder(enc_in)[2])
vae = Model(enc_in,dec_conv5)
return {'inputs': enc_in,'outputs': dec_conv5,'mu': mu,'sigma': sigma,'z': z,'encoder': encoder,'decoder': decoder,'vae': vae}
def weighted_binary_crossentropy(target,output):
loss = -(98.0 * target * K.log(output) + 2.0 * (1.0 - target) * K.log(1.0 - output)) / 100.0
return loss
这就是失落与健康
voxel_loss = K.cast(K.mean(weighted_binary_crossentropy(inputs,K.clip(sigmoid(outputs),1e-7,1.0 - 1e-7))),'float32') # + kl_div
vae.add_loss(voxel_loss)
sgd = SGD(lr = learning_rate_1,momentum = momentum,nesterov = True)
vae.compile(optimizer = sgd,metrics = ['accuracy'])
# vae.compile(optimizer = sgd,loss = vae_loss(inputs,sigmoid(outputs)),metrics = ['accuracy'])
vae.fit(
x_train,x_train,epochs = epoch_num,batch_size = batch_size,validation_data = (x_test,x_test),callbacks = [LearningRateScheduler(learning_rate_scheduler)]
)
错误是
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-9-b1e0bf03e31b> in <module>
30 batch_size = batch_size,31 validation_data = (x_test,---> 32 callbacks = [LearningRateScheduler(learning_rate_scheduler)]
33 )
34
~/anaconda3/envs/tf19/lib/python3.6/site-packages/tensorflow/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,**kwargs)
1261 steps_name='steps_per_epoch',1262 steps=steps_per_epoch,-> 1263 validation_split=validation_split)
1264
1265 # Prepare validation data.
~/anaconda3/envs/tf19/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py in _standardize_user_data(self,check_steps,steps_name,steps,validation_split)
905 feed_output_shapes,906 check_batch_axis=False,# Don't enforce the batch size.
--> 907 exception_prefix='target')
908
909 # Generate sample-wise weight values given the `sample_weight` and
~/anaconda3/envs/tf19/lib/python3.6/site-packages/tensorflow/python/keras/engine/training_utils.py in standardize_input_data(data,names,shapes,check_batch_axis,exception_prefix)
114 if data is not None and hasattr(data,'__len__') and len(data):
115 raise ValueError('Error when checking model ' + exception_prefix + ': '
--> 116 'expected no data,but got:',data)
117 return []
118 if data is None:
ValueError: ('Error when checking model target: expected no data,array([[[[[-1.,-1.,...,-1.],[-1.,-1.]],
我看到目标的意思是输出。但是我的输出是重建的数据,我无法理解为什么期望没有数据。请帮忙
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。