Python 3.x 用函数API实现广域深层神经网络
我正在尝试使用Keras函数API构建一个广泛而深入的神经网络。我得到一个形状不匹配错误的值。我不明白我错在哪里。我在Fashion MNIST数据集上实现了这一点。X_列的形状是(60000,28,28),Y_列的形状是(60000,)。我猜这个错误是因为行:input\ux=keras.layers。。。。但我不知道如何解决它 代码:Python 3.x 用函数API实现广域深层神经网络,python-3.x,tensorflow,deep-learning,tf.keras,Python 3.x,Tensorflow,Deep Learning,Tf.keras,我正在尝试使用Keras函数API构建一个广泛而深入的神经网络。我得到一个形状不匹配错误的值。我不明白我错在哪里。我在Fashion MNIST数据集上实现了这一点。X_列的形状是(60000,28,28),Y_列的形状是(60000,)。我猜这个错误是因为行:input\ux=keras.layers。。。。但我不知道如何解决它 代码: # Building a Non Sequnetial Model using Functional API One Use of it is in Wide
# Building a Non Sequnetial Model using Functional API One Use of it is in Wide and Deep Neural Networks
input_ = keras.layers.Input(shape=X_train.shape[1:]) # This will return shape of the input [28,28],remeber we dont have to set it to the number of neurons in the layer
hidden1 = keras.layers.Dense(100,activation = "relu")(input_) # We have to call it as a function
hidden2 = keras.layers.Dense(100,activation = "relu")(hidden1)
concat_layer = keras.layers.concatenate([input_,hidden2])
output = keras.layers.Dense(10,activation="softmax")(concat_layer)
model = keras.models.Model(inputs=[input_], outputs=[output])
model.compile(loss = keras.losses.sparse_categorical_crossentropy,optimizer = keras.optimizers.SGD(lr = 0.8),metrics= ["accuracy"])
Tensorboard_cb = keras.callbacks.TensorBoard(Path_Tensor)
model.fit(X_train,Y_train,validation_split=0.2,epochs=100,callbacks=[Tensorboard_cb])
错误:
Epoch 1/100
---------------------------------------------------------------------------
ValueError Traceback (most recent call last)
<ipython-input-97-675a2b302d27> in <module>
----> 1 model.fit(X_train,Y_train,validation_split=0.2,epochs=100,callbacks=[Tensorboard_cb])
c:\users\na462\appdata\local\programs\python\python37\lib\site-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.
c:\users\na462\appdata\local\programs\python\python37\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)
1096 batch_size=batch_size):
1097 callbacks.on_train_batch_begin(step)
-> 1098 tmp_logs = train_function(iterator)
1099 if data_handler.should_sync:
1100 context.async_wait()
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\def_function.py in __call__(self, *args, **kwds)
778 else:
779 compiler = "nonXla"
--> 780 result = self._call(*args, **kwds)
781
782 new_tracing_count = self._get_tracing_count()
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\def_function.py in _call(self, *args, **kwds)
821 # This is the first call of __call__, so we have to initialize.
822 initializers = []
--> 823 self._initialize(args, kwds, add_initializers_to=initializers)
824 finally:
825 # At this point we know that the initialization is complete (or less
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\def_function.py in _initialize(self, args, kwds, add_initializers_to)
695 self._concrete_stateful_fn = (
696 self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
--> 697 *args, **kwds))
698
699 def invalid_creator_scope(*unused_args, **unused_kwds):
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\function.py in _get_concrete_function_internal_garbage_collected(self, *args, **kwargs)
2853 args, kwargs = None, None
2854 with self._lock:
-> 2855 graph_function, _, _ = self._maybe_define_function(args, kwargs)
2856 return graph_function
2857
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\function.py in _maybe_define_function(self, args, kwargs)
3211
3212 self._function_cache.missed.add(call_context_key)
-> 3213 graph_function = self._create_graph_function(args, kwargs)
3214 self._function_cache.primary[cache_key] = graph_function
3215 return graph_function, args, kwargs
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\function.py in _create_graph_function(self, args, kwargs, override_flat_arg_shapes)
3073 arg_names=arg_names,
3074 override_flat_arg_shapes=override_flat_arg_shapes,
-> 3075 capture_by_value=self._capture_by_value),
3076 self._function_attributes,
3077 function_spec=self.function_spec,
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\func_graph.py in func_graph_from_py_func(name, python_func, args, kwargs, signature, func_graph, autograph, autograph_options, add_control_dependencies, arg_names, op_return_value, collections, capture_by_value, override_flat_arg_shapes)
984 _, original_func = tf_decorator.unwrap(python_func)
985
--> 986 func_outputs = python_func(*func_args, **func_kwargs)
987
988 # invariant: `func_outputs` contains only Tensors, CompositeTensors,
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\eager\def_function.py in wrapped_fn(*args, **kwds)
598 # __wrapped__ allows AutoGraph to swap in a converted function. We give
599 # the function a weak reference to itself to avoid a reference cycle.
--> 600 return weak_wrapped_fn().__wrapped__(*args, **kwds)
601 weak_wrapped_fn = weakref.ref(wrapped_fn)
602
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\framework\func_graph.py in wrapper(*args, **kwargs)
971 except Exception as e: # pylint:disable=broad-except
972 if hasattr(e, "ag_error_metadata"):
--> 973 raise e.ag_error_metadata.to_exception(e)
974 else:
975 raise
ValueError: in user code:
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\training.py:806 train_function *
return step_function(self, iterator)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\training.py:796 step_function **
outputs = model.distribute_strategy.run(run_step, args=(data,))
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:1211 run
return self._extended.call_for_each_replica(fn, args=args, kwargs=kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2585 call_for_each_replica
return self._call_for_each_replica(fn, args, kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\distribute\distribute_lib.py:2945 _call_for_each_replica
return fn(*args, **kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\training.py:789 run_step **
outputs = model.train_step(data)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\training.py:749 train_step
y, y_pred, sample_weight, regularization_losses=self.losses)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\engine\compile_utils.py:204 __call__
loss_value = loss_obj(y_t, y_p, sample_weight=sw)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\losses.py:149 __call__
losses = ag_call(y_true, y_pred)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\losses.py:253 call **
return ag_fn(y_true, y_pred, **self._fn_kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\util\dispatch.py:201 wrapper
return target(*args, **kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\losses.py:1567 sparse_categorical_crossentropy
y_true, y_pred, from_logits=from_logits, axis=axis)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\util\dispatch.py:201 wrapper
return target(*args, **kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\keras\backend.py:4783 sparse_categorical_crossentropy
labels=target, logits=output)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\util\dispatch.py:201 wrapper
return target(*args, **kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_ops.py:4176 sparse_softmax_cross_entropy_with_logits_v2
labels=labels, logits=logits, name=name)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\util\dispatch.py:201 wrapper
return target(*args, **kwargs)
c:\users\na462\appdata\local\programs\python\python37\lib\site-packages\tensorflow\python\ops\nn_ops.py:4091 sparse_softmax_cross_entropy_with_logits
logits.get_shape()))
ValueError: Shape mismatch: The shape of labels (received (32, 1)) should equal the shape of logits except for the last dimension (received (32, 28, 10)).
纪元1/100
---------------------------------------------------------------------------
ValueError回溯(最近一次调用上次)
在里面
---->1模型拟合(X序列、Y序列、验证分割=0.2、历元=100、回调=[Tensorboard\u cb])
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\keras\engine\training.py in\u method\u包装(self,*args,**kwargs)
106定义方法包装(self,*args,**kwargs):
107如果不是self._处于_multi_worker_模式():#pylint:disable=受保护的访问
-->108返回方法(self、*args、**kwargs)
109
110#已经在“运行分配协调器”内部运行了。
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\keras\engine\training.py(self、x、y、批大小、历元、冗余、回调、验证拆分、验证数据、洗牌、类权重、样本权重、初始历元、每个历元的步骤、验证步骤、验证批次大小、验证频率、最大队列大小、工人、使用多处理)
1096批次大小=批次大小):
1097回拨。列车上批次开始(步骤)
->1098 tmp_日志=训练函数(迭代器)
1099如果数据处理程序应同步:
1100 context.async_wait()
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\def\u function.py在调用中(self,*args,**kwds)
778其他:
779 compiler=“nonXla”
-->780结果=自身调用(*args,**kwds)
781
782 new_tracing_count=self._get_tracing_count()
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\def_function.py in_调用(self,*args,**kwds)
821#这是"调用"的第一个调用,因此我们必须初始化。
822个初始值设定项=[]
-->823自身初始化(参数、KWD、添加初始化器到=初始化器)
824最后:
825#此时我们知道初始化已完成(或更少)
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\def_function.py in_initialize(self、args、kwds、add_initializer_to)
695自具体状态fn=(
696 self._stateful_fn._get_concrete_function_internal_garbage_collected(#pylint:disable=protected access
-->697*args,**科威特第纳尔)
698
699 def无效的创建者范围(*未使用的参数,**未使用的参数):
c:\users\na462\appdata\local\programs\python37\lib\site packages\tensorflow\python\eager\function.py in\u get\u concrete\u function\u internal\u garbage\u collected(self,*args,**kwargs)
2853 args,kwargs=None,None
2854带自锁:
->2855图形函数,可能定义函数(args,kwargs)
2856返回图函数
2857
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\function.py在定义函数(self、args、kwargs)中
3211
3212自.\u函数\u缓存.missed.add(调用上下文\u键)
->3213图形函数=self.\u创建图形函数(args,kwargs)
3214自.\u函数\u缓存.primary[缓存\u键]=图形\u函数
3215返回图_函数,args,kwargs
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\function.py in\u create\u graph\u function(self、args、kwargs、override\u flat\u arg\u shapes)
3073参数名称=参数名称,
3074覆盖平面形状=覆盖平面形状,
->3075按值捕获=自身。_按值捕获),
3076自我功能属性,
3077功能规格=自身功能规格,
c:\users\na462\appdata\local\programs\python37\lib\site packages\tensorflow\python\framework\func\u graph.py来自func\u py\u func(名称、python\u func、args、kwargs、签名、func\u图、自动签名、自动签名选项、添加控制依赖项、arg\u名称、op\u返回值、集合、按值捕获、覆盖平面arg\u形状)
984,original_func=tf_decorator.unwrap(python_func)
985
-->986 func_输出=python_func(*func_参数,**func_参数)
987
988#不变量:`func_outputs`只包含张量、复合传感器、,
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\eager\def_function.py in wrapped_fn(*args,**kwds)
598#uuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuuu。我们给予
599#函数对自身进行弱引用以避免引用循环。
-->600返回弱_-wrapped_-fn()
601弱包层=弱包层参考(包层)
602
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\framework\func\u graph.py在包装中(*args,**kwargs)
971例外情况为e:#pylint:disable=broad except
972如果hasattr(e,“AGU错误元数据”):
-->973将e.ag\u错误\u元数据引发到\u异常(e)
974其他:
975提高
ValueError:在用户代码中:
c:\users\na462\appdata\local\programs\python\37\lib\site packages\tensorflow\python\keras\engine\training.py:806 train\u函数*
返回步骤_函数(self、迭代器)
c:\users\na462\appdata\local\programs\python\python37\lib\site packages\tensorflow\python\keras\engine\