Python 尝试执行model.fit()时出现ValueError-:无法将NumPy数组转换为张量(不支持的对象类型NumPy.ndarray)
我正在尝试为边界盒回归训练网络。我创建了pd.DataFrame,如下所示: 以下是我的列车和验证图像生成器:Python 尝试执行model.fit()时出现ValueError-:无法将NumPy数组转换为张量(不支持的对象类型NumPy.ndarray),python,numpy,tensorflow,keras,deep-learning,Python,Numpy,Tensorflow,Keras,Deep Learning,我正在尝试为边界盒回归训练网络。我创建了pd.DataFrame,如下所示: 以下是我的列车和验证图像生成器: image_generator = tf.keras.preprocessing.image.ImageDataGenerator( rescale = 1./255, rotation_range = 25,
image_generator = tf.keras.preprocessing.image.ImageDataGenerator(
rescale = 1./255,
rotation_range = 25,
zoom_range=[0.8, 1.2],
vertical_flip=True,
horizontal_flip=True,
)
train_generator = image_generator.flow_from_dataframe(
dataframe=train_df,
directory=cbis_ddsm_train_images_dir,
x_col="image file path",
y_col="coordinates",
class_mode="raw",
batch_size=BATCH_SIZE,
shuffle=True,
seed=1,
color_mode="grayscale",
target_size=(1024, 1024))
val_gen = tf.keras.preprocessing.image.ImageDataGenerator(
rescale = 1./255,
)
val_generator = val_gen.flow_from_dataframe(
dataframe=val_df,
directory=cbis_ddsm_train_images_dir,
x_col="image file path",
y_col=None,
class_mode="raw",
batch_size=BATCH_SIZE,
shuffle=False,
seed=1,
color_mode="grayscale",
target_size=(1024, 1024))
请注意,我已将列表中的Y列(即bbox坐标)转换为numpy维度数组,如下所示:
for idx, row in train_df.iterrows():
height, width = row['size']
row['coordinates'] = np.asarray([normalize_bbox(c, height, width) for c in row['coordinates']][0]).astype('float32')
当我尝试执行以下代码时:
opt = Adam(lr=INIT_LR)
final_model.compile(optimizer=opt, loss="mse")
final_model.fit(train_generator, steps_per_epoch=steps_per_epoch, epochs=3,
validation_data=val_generator, validation_steps=val_steps, verbose=1)
我收到以下错误消息:
ValueError Traceback (most recent call last)
<ipython-input-46-90f3a1cd9c87> in <module>()
8
9 final_model.fit(train_generator, steps_per_epoch=steps_per_epoch, epochs=3,
---> 10 validation_data=val_generator, validation_steps=val_steps, verbose=1)
11 final_model.save(os.path.join(experiment1_dir, "resnet_fine-tuned-head.h5"))
12
14 frames
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in _method_wrapper(self, *args, **kwargs)
106 def _method_wrapper(self, *args, **kwargs):
107 if not self._in_multi_worker_mode(): # pylint: disable=protected-access
--> 108 return method(self, *args, **kwargs)
109
110 # Running inside `run_distribute_coordinator` already.
/usr/local/lib/python3.6/dist-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, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
1061 use_multiprocessing=use_multiprocessing,
1062 model=self,
-> 1063 steps_per_execution=self._steps_per_execution)
1064
1065 # Container that configures and calls `tf.keras.Callback`s.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self, x, y, sample_weight, batch_size, steps_per_epoch, initial_epoch, epochs, shuffle, class_weight, max_queue_size, workers, use_multiprocessing, model, steps_per_execution)
1115 use_multiprocessing=use_multiprocessing,
1116 distribution_strategy=ds_context.get_strategy(),
-> 1117 model=model)
1118
1119 strategy = ds_context.get_strategy()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self, x, y, sample_weights, shuffle, workers, use_multiprocessing, max_queue_size, model, **kwargs)
914 max_queue_size=max_queue_size,
915 model=model,
--> 916 **kwargs)
917
918 @staticmethod
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in __init__(self, x, y, sample_weights, workers, use_multiprocessing, max_queue_size, model, **kwargs)
786 peek, x = self._peek_and_restore(x)
787 peek = self._standardize_batch(peek)
--> 788 peek = _process_tensorlike(peek)
789
790 # Need to build the Model on concrete input shapes.
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in _process_tensorlike(inputs)
1019 return x
1020
-> 1021 inputs = nest.map_structure(_convert_numpy_and_scipy, inputs)
1022 return nest.list_to_tuple(inputs)
1023
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in map_structure(func, *structure, **kwargs)
633
634 return pack_sequence_as(
--> 635 structure[0], [func(*x) for x in entries],
636 expand_composites=expand_composites)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in <listcomp>(.0)
633
634 return pack_sequence_as(
--> 635 structure[0], [func(*x) for x in entries],
636 expand_composites=expand_composites)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data_adapter.py in _convert_numpy_and_scipy(x)
1014 if issubclass(x.dtype.type, np.floating):
1015 dtype = backend.floatx()
-> 1016 return ops.convert_to_tensor(x, dtype=dtype)
1017 elif scipy_sparse and scipy_sparse.issparse(x):
1018 return _scipy_sparse_to_sparse_tensor(x)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types)
1497
1498 if ret is None:
-> 1499 ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
1500
1501 if ret is NotImplemented:
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor_conversion_registry.py in _default_conversion_function(***failed resolving arguments***)
50 def _default_conversion_function(value, dtype, name, as_ref):
51 del as_ref # Unused.
---> 52 return constant_op.constant(value, dtype, name=name)
53
54
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in constant(value, dtype, shape, name)
262 """
263 return _constant_impl(value, dtype, shape, name, verify_shape=False,
--> 264 allow_broadcast=True)
265
266
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in _constant_impl(value, dtype, shape, name, verify_shape, allow_broadcast)
273 with trace.Trace("tf.constant"):
274 return _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
--> 275 return _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
276
277 g = ops.get_default_graph()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
298 def _constant_eager_impl(ctx, value, dtype, shape, verify_shape):
299 """Implementation of eager constant."""
--> 300 t = convert_to_eager_tensor(value, ctx, dtype)
301 if shape is None:
302 return t
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py in convert_to_eager_tensor(value, ctx, dtype)
96 dtype = dtypes.as_dtype(dtype).as_datatype_enum
97 ctx.ensure_initialized()
---> 98 return ops.EagerTensor(value, ctx.device_name, dtype)
99
100
ValueError: Failed to convert a NumPy array to a Tensor (Unsupported object type numpy.ndarray).
ValueError回溯(最近一次调用)
在()
8.
9最终模型拟合(列车发电机,每个历元的步数=每个历元的步数,历元=3,
--->10验证\u数据=val\u生成器,验证\u步骤=val\u步骤,详细信息=1)
11最终的模型保存(os.path.join(experiment1\u dir,“resnet\u fine-tuned-head.h5”))
12
14帧
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in_method_包装(self,*args,**kwargs)
106定义方法包装(self,*args,**kwargs):
107如果不是self._处于_multi_worker_模式():#pylint:disable=受保护的访问
-->108返回方法(self、*args、**kwargs)
109
110#已经在“运行分配协调器”内部运行了。
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/training.py in fit(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、无序、类权重、样本权重、初始历元、每历元的步长、验证步骤、验证批量大小、验证队列频率、最大大小、工作人员、使用多处理)
1061使用多处理=使用多处理,
1062型号=自我,
->1063步每执行=自。_步每执行)
1064
1065#配置和调用`tf.keras.Callback`的容器。
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py in\uuuuuu init\uuuuuuuuu(self,x,y,sample\u weight,batch\u size,steps\u per\u epoch,initial\u epoch,epoch,shuffle,class\u weight,max\u queue\u size,worker,use\u多处理,model,steps\u per\u执行)
1115使用多处理=使用多处理,
1116 distribution_strategy=ds_context.get_strategy(),
->1117型号=型号)
1118
1119 strategy=ds_context.get_strategy()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py in\uuuuuuu init\uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu
914最大队列大小=最大队列大小,
915型号=型号,
-->916**夸尔格)
917
918@staticmethod
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py in\uuuuuuu init\uuuuuuuuu(self,x,y,sample\u权重,worker,use\u多处理,最大队列大小,模型,**kwargs)
786窥视,x=自。窥视和还原(x)
787 peek=自标准化批次(peek)
-->788 peek=_过程_张力状(peek)
789
790#需要在具体的输入形状上构建模型。
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py in\u process\u tensorlike(输入)
1019返回x
1020
->1021 inputs=nest.map\u结构(\u convert\u numpy\u和\u scipy,inputs)
1022返回嵌套。列表到元组(输入)
1023
/映射结构中的usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py(func,*structure,**kwargs)
633
634返回包\u序列\u组件(
-->635结构[0],[func(*x)表示条目中的x],
636扩展_复合材料=扩展_复合材料)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/util/nest.py in(.0)
633
634返回包\u序列\u组件(
-->635结构[0],[func(*x)表示条目中的x],
636扩展_复合材料=扩展_复合材料)
637
/usr/local/lib/python3.6/dist-packages/tensorflow/python/keras/engine/data\u adapter.py in\u convert\u numpy\u和\u scipy(x)
1014如果issubclass(x.dtype.type,np.floating):
1015 dtype=backend.floatx()
->1016返回运算。将\u转换为\u张量(x,dtype=dtype)
1017 elif scipy_sparse和scipy_sparse.issparse(x):
1018返回稀疏张量(x)
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/ops.py in convert_to_tensor(值、数据类型、名称、as_ref、首选数据类型、数据类型提示、ctx、接受的结果类型)
1497
1498如果ret为无:
->1499 ret=conversion\u func(值,dtype=dtype,name=name,as\u ref=as\u ref)
1500
1501如果未实施ret:
/函数中的usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/tensor\u conversion\u registry.py(***解析参数失败***)
50 def默认转换函数(值、数据类型、名称,作为参考):
51 del as_ref#未使用。
--->52返回常量\运算常量(值,数据类型,名称=名称)
53
54
/常量中的usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant_op.py(值、数据类型、形状、名称)
262 """
263返回\u常量\u impl(值、数据类型、形状、名称、验证\u形状=False,
-->264允许_广播=真)
265
266
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant\u op.py in\u constant\u impl(值、数据类型、形状、名称、验证形状、允许广播)
273带有trace.trace(“tf.constant”):
274返回_常量_eager _impl(ctx、值、数据类型、形状、验证形状)
-->275返回_常量_eager _impl(ctx、值、数据类型、形状、验证形状)
276
277 g=ops.get\u default\u graph()
/usr/local/lib/python3.6/dist-packages/tensorflow/python/framework/constant\u op.py in\u constant\u eager\u impl(ctx、值、数据类型、形状、验证形状)
298定义常量(ctx、值、数据类型、形状、验证形状):
299“急切常数的实现”
-->300 t=转换为张量(值,ctx,数据类型
train_generator._targets = np.stack(train_generator._targets)
val_generator._targets = np.stack(val_generator._targets)