以下是我在学习《轻松学会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
ValueError: object __array__ method not producing an array
最新推荐文章于 2024-05-21 11:50:13 发布