我收到了错误
文件“/anaconda/envs/tf3/lib/python3.6/site-packages/keras/engine/training.py”,第830行,编译sample_weight,mask)文件“/ anaconda / envs / tf3 / lib / python3 .6 / site-packages / keras / engine / training.py“,第445行,加权score_array * =权重文件”/anaconda/envs/tf3/lib/python3.6/site-packages/tensorflow/python/ops/ math_ops.py“,第898行,在binary_op_wrapper中y = ops.convert_to_tensor(y,dtype = x.dtype.base_dtype,name =”y“)文件”/anaconda/envs/tf3/lib/python3.6/site-packages /tensorflow/python/framework/ops.py“,第932行,在convert_to_tensor中as_ref = False)文件”/anaconda/envs/tf3/lib/python3.6/site-packages/tensorflow/python/framework/ops.py“ ,第1022行,in internal_convert_to_tensor ret = conversion_func(value,dtype = dtype,name = name,as_ref = as_ref)File“/anaconda/envs/tf3/lib/python3.6/site-packages/tensorflow/python/framework/ops .py“,第866行,在_TensorTensorConversionFunction(dtype.name,t.dtype.name,str(t))中)ValueError:Tensor转换为Tenso请求dtype int32 r与dtype float32:'Tensor(“global_average_pooling2d_1_sample_weights:0”,shape =(?,),dtype = float32)'
在培训阶段 .
通过 Conda 运行最新的 Keras (2.1.3) 和 TensorFlow (1.5) .
以下是重现错误的最小代码:
from keras.layers import Input, Conv2D, GlobalAveragePooling2D
from keras.models import Model
import keras.backend as K
import numpy as np
def test_loss(y_input, x_input):
x1 = K.cast(x_input, dtype='int32')
y1 = K.cast(y_input, dtype='int32')
loss = K.square(x1 - y1)
reduced_loss = K.cumsum(loss)
return reduced_loss
train_data = 10*np.random.rand(1600, 18,18,512)
validation_data = 10*np.random.rand(200, 18,18,512)
Y_train = np.random.rand(1600, 803)
Y_test = np.random.rand(200, 803)
#model
inputs = Input(shape=train_data.shape[1:])
x = Conv2D(803, (1,1), activation='sigmoid')(inputs)
predictions = GlobalAveragePooling2D(input_shape=train_data.shape[1:])(x)
model = Model(inputs=inputs, outputs=predictions)
model.summary()
model.compile(optimizer='adam', loss=test_loss, metrics=['accuracy'])
model.fit(train_data, Y_train,
epochs=200,
batch_size=1,
validation_data=(validation_data, Y_test))