ValueError: object __array__ method not producing an array

以下是我在学习《轻松学会TensorFlow2.0人工智能深度学习应用开发》中的一个案例,
我用的版本是TensorFlow2.4.1
我的问题是在最后的回调函数一直会报valueerror类型的错误(具体信息贴在文章后面了)
希望有大佬不吝赐教


import os
import numpy as np
import pandas as pd
import tensorflow as tf
import matplotlib.pyplot as plt
from tensorflow import keras
from tensorflow.keras import layers
data = pd.read_csv('kc_house_data.csv')
pd.options.display.max_columns =25
data['year']=pd.to_numeric(data['date'].str.slice(0,4))
data['month']=pd.to_numeric(data['date'].str.slice(4,6))
data['day']=pd.to_numeric(data['date'].str.slice(6,8))
data.drop(['id'],axis="columns",inplace=True)
data.drop(['date'],axis="columns",inplace=True)
data_num = data.shape[0]
indexes = np.random.permutation(data_num)#数量为data_num的随机索引
train_indexes = indexes[:int(data_num*0.6)]
val_indexes = indexes[int(data_num*0.6):int(data_num*0.8)]
test_indexes = indexes[int(data_num*0.8):]
train_data = data.loc[train_indexes]
val_data = data.loc[val_indexes]
test_data = data.loc[test_indexes]
#分割数据集
train_validation_data = pd.concat([train_data,val_data])
mean = train_validation_data.mean()
std = train_validation_data.std()
train_data = (train_data - mean)/std
val_data = (val_data - mean) /std
x_train = np.array(train_data.drop('price',axis='columns'))
y_train = np.array(train_data['price'])
x_val = np.array(val_data.drop('price',axis='columns'))
y_val = np.array(val_data['price'])

model = keras.Sequential(name =' model-1')
model.add(layers.Dense(64,activation='relu',input_shape=(22,)))
model.add(layers.Dense(64,activation='relu'))
model.add(layers.Dense(1))
model.summary()
model.compile(keras.optimizers.Adam(0.001),
             loss=keras.losses.MeanSquaredError(),
             metrics = [keras.metrics.MeanAbsoluteError()])
model_dir= "lab2-logs/models/"
os.makedirs(model_dir)
logdir = os.path.join('lab2-logs','model-1')
model_cbk = keras.callbacks.TensorBoard(log_dir=logdir)
model_mckp = keras.callbacks.ModelCheckpoint('lab2-logs/models/Best-model-1.h5',
                                            monitor = 'val_mean_absoluate_error',
                                            save_best_only =True,
                                            mode ='min'
                                     
                                            )

history = model.fit(
                   x_train,y_train,
                   batch_size = 64,
                   epochs=300,
                   validation_data = (x_val,y_val),
                   callbacks = [model_cbk,model_mckp]
                  
                   )





---------------------------------------------------------------------------
ValueError                                Traceback (most recent call last)
<ipython-input-218-112d0cdaba4b> in <module>()
      4                    epochs=300,
      5                    validation_data = (x_val,y_val),
----> 6                    callbacks = [model_cbk,model_mckp]
      7 
      8                    )

D:\ProgramData\Anaconda3\lib\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, validation_batch_size, validation_freq, max_queue_size, workers, use_multiprocessing)
   1062           use_multiprocessing=use_multiprocessing,
   1063           model=self,
-> 1064           steps_per_execution=self._steps_per_execution)
   1065 
   1066       # Container that configures and calls `tf.keras.Callback`s.

D:\ProgramData\Anaconda3\lib\site-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)
   1110         use_multiprocessing=use_multiprocessing,
   1111         distribution_strategy=ds_context.get_strategy(),
-> 1112         model=model)
   1113 
   1114     strategy = ds_context.get_strategy()

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py in __init__(self, x, y, sample_weights, sample_weight_modes, batch_size, epochs, steps, shuffle, **kwargs)
    261                **kwargs):
    262     super(TensorLikeDataAdapter, self).__init__(x, y, **kwargs)
--> 263     x, y, sample_weights = _process_tensorlike((x, y, sample_weights))
    264     sample_weight_modes = broadcast_sample_weight_modes(
    265         sample_weights, sample_weight_modes)

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py in _process_tensorlike(inputs)
   1014     return x
   1015 
-> 1016   inputs = nest.map_structure(_convert_numpy_and_scipy, inputs)
   1017   return nest.list_to_tuple(inputs)
   1018 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\util\nest.py in map_structure(func, *structure, **kwargs)
    657 
    658   return pack_sequence_as(
--> 659       structure[0], [func(*x) for x in entries],
    660       expand_composites=expand_composites)
    661 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\util\nest.py in <listcomp>(.0)
    657 
    658   return pack_sequence_as(
--> 659       structure[0], [func(*x) for x in entries],
    660       expand_composites=expand_composites)
    661 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\keras\engine\data_adapter.py in _convert_numpy_and_scipy(x)
   1009       if issubclass(x.dtype.type, np.floating):
   1010         dtype = backend.floatx()
-> 1011       return ops.convert_to_tensor_v2_with_dispatch(x, dtype=dtype)
   1012     elif scipy_sparse and scipy_sparse.issparse(x):
   1013       return _scipy_sparse_to_sparse_tensor(x)

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\util\dispatch.py in wrapper(*args, **kwargs)
    199     """Call target, and fall back on dispatchers if there is a TypeError."""
    200     try:
--> 201       return target(*args, **kwargs)
    202     except (TypeError, ValueError):
    203       # Note: convert_to_eager_tensor currently raises a ValueError, not a

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in convert_to_tensor_v2_with_dispatch(value, dtype, dtype_hint, name)
   1403   """
   1404   return convert_to_tensor_v2(
-> 1405       value, dtype=dtype, dtype_hint=dtype_hint, name=name)
   1406 
   1407 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in convert_to_tensor_v2(value, dtype, dtype_hint, name)
   1413       name=name,
   1414       preferred_dtype=dtype_hint,
-> 1415       as_ref=False)
   1416 
   1417 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\profiler\trace.py in wrapped(*args, **kwargs)
    161         with Trace(trace_name, **trace_kwargs):
    162           return func(*args, **kwargs)
--> 163       return func(*args, **kwargs)
    164 
    165     return wrapped

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\ops.py in convert_to_tensor(value, dtype, name, as_ref, preferred_dtype, dtype_hint, ctx, accepted_result_types)
   1538 
   1539     if ret is None:
-> 1540       ret = conversion_func(value, dtype=dtype, name=name, as_ref=as_ref)
   1541 
   1542     if ret is NotImplemented:

D:\ProgramData\Anaconda3\lib\site-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 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py in constant(value, dtype, shape, name)
    263   """
    264   return _constant_impl(value, dtype, shape, name, verify_shape=False,
--> 265                         allow_broadcast=True)
    266 
    267 

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py in _constant_impl(value, dtype, shape, name, verify_shape, allow_broadcast)
    274       with trace.Trace("tf.constant"):
    275         return _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
--> 276     return _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
    277 
    278   g = ops.get_default_graph()

D:\ProgramData\Anaconda3\lib\site-packages\tensorflow\python\framework\constant_op.py in _constant_eager_impl(ctx, value, dtype, shape, verify_shape)
    299 def _constant_eager_impl(ctx, value, dtype, shape, verify_shape):
    300   """Implementation of eager constant."""
--> 301   t = convert_to_eager_tensor(value, ctx, dtype)
    302   if shape is None:
    303     return t

D:\ProgramData\Anaconda3\lib\site-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: object __array__ method not producing an array
  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值