如何解决ValueError:张量的形状 (26, 400) 与提供的形状 [26, 200]
我正在使用 keras
和 keras_tuner
训练神经网络进行超参数调整,但遇到了与之前在网站上提出的其他问题不同的错误。
根据我的知识,这是相关的代码:
- 拆分我的数据集
x = data.drop('label',axis=1).values
X = normalize(x)
y = pd.get_dummies(data['label']).values
X_train,X_test,y_train,y_test = train_test_split(X,y,test_size=0.30,random_state=40)
print("Length of train set: ",X_train.shape,"y:",y_train.shape)
print("Length of test set: ",X_test.shape,y_test.shape)
结果如下:
Length of train set: (7922,26) y: (7922,6)
Length of test set: (3396,26) y: (3396,6)
- 构建我的模型
def build_model(hp):
model = Sequential()
step = 100
for i in range(hp.Int('num_layers',3,4)):
if i == 1:
model.add(
Dense(
units=hp.Int('units_'+str(i),min_value=steP*2,max_value=steP*5,default=steP*2,step=step),input_dim=26,activation=hp.Choice('dense_activation_'+str(i),values=['relu','tanh','sigmoid'])
)
)
else:
model.add(
Dense(units=hp.Int('units_' + str(i),'sigmoid'])
)
)
model.add(
Dropout(
hp.Float('dropout_' + str(i),min_value=0.0,max_value=0.1,default=0.1,step=0.02)
)
)
if step > 20:
step = step/2
else:
step = 10
model.add(Dense(6,activation='softmax'))
# optimizer = optimizers.Adam(learning_rate=0.001)
model.compile(loss='categorical_crossentropy',optimizer='adam',metrics=['accuracy'])
return model
- 使用 Hyperband 对参数进行超调
tuner = kt.Hyperband(
build_model,max_epochs=100,objective='accuracy',seed=42,executions_per_trial=2
)
tuner.search(X_train,epochs=500,validation_data=(X_test,y_test))
best_model = tuner.get_best_models()[0]
Traceback (most recent call last):
File "PycharmProjects\FYP_Project\Keras training\Keras Training.py",line 75,in <module>
best_model.evaluate(X_test,y_test)[1] * 100)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\training.py",line 1489,in evaluate
tmp_logs = self.test_function(iterator)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py",line 889,in __call__
result = self._call(*args,**kwds)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py",line 933,in _call
self._initialize(args,kwds,add_initializers_to=initializers)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py",line 763,in _initialize
self._stateful_fn._get_concrete_function_internal_garbage_collected( # pylint: disable=protected-access
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\function.py",line 3050,in _get_concrete_function_internal_garbage_collected
graph_function,_ = self._maybe_define_function(args,kwargs)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\function.py",line 3444,in _maybe_define_function
graph_function = self._create_graph_function(args,line 3279,in _create_graph_function
func_graph_module.func_graph_from_py_func(
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\framework\func_graph.py",line 999,in func_graph_from_py_func
func_outputs = python_func(*func_args,**func_kwargs)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py",line 672,in wrapped_fn
out = weak_wrapped_fn().__wrapped__(*args,**kwds)
File "AppData\Roaming\Python\python39\site-packages\tensorflow\python\framework\func_graph.py",line 986,in wrapper
raise e.ag_error_Metadata.to_exception(e)
ValueError: in user code:
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\training.py:1323 test_function *
return step_function(self,iterator)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\training.py:1314 step_function **
outputs = model.distribute_strategy.run(run_step,args=(data,))
AppData\Roaming\Python\python39\site-packages\tensorflow\python\distribute\distribute_lib.py:1285 run
return self._extended.call_for_each_replica(fn,args=args,kwargs=kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\distribute\distribute_lib.py:2833 call_for_each_replica
return self._call_for_each_replica(fn,args,kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\distribute\distribute_lib.py:3608 _call_for_each_replica
return fn(*args,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\training.py:1307 run_step **
outputs = model.test_step(data)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\training.py:1266 test_step
y_pred = self(x,training=False)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\base_layer.py:1030 __call__
outputs = call_fn(inputs,*args,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\sequential.py:394 call
outputs = layer(inputs,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\base_layer.py:1023 __call__
self._maybe_build(inputs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\base_layer.py:2625 _maybe_build
self.build(input_shapes) # pylint:disable=not-callable
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\layers\core.py:1191 build
self.kernel = self.add_weight(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\base_layer.py:639 add_weight
variable = self._add_variable_with_custom_getter(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\training\tracking\base.py:810 _add_variable_with_custom_getter
new_variable = getter(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\keras\engine\base_layer_utils.py:127 make_variable
return tf_variables.VariableV1(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:260 __call__
return cls._variable_v1_call(*args,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:206 _variable_v1_call
return prevIoUs_getter(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:67 getter
return captured_getter(captured_prevIoUs,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\distribute\distribute_lib.py:3523 creator
return next_creator(**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:67 getter
return captured_getter(captured_prevIoUs,**kwargs)
C:\Users\Axell\AppData\Roaming\Python\python39\site-packages\tensorflow\python\distribute\distribute_lib.py:3523 creator
return next_creator(**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:67 getter
return captured_getter(captured_prevIoUs,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py:750 variable_capturing_scope
v = UnliftedInitializerVariable(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\ops\variables.py:264 __call__
return super(VariableMetaclass,cls).__call__(*args,**kwargs)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\eager\def_function.py:293 __init__
initial_value = initial_value()
AppData\Roaming\Python\python39\site-packages\tensorflow\python\training\tracking\base.py:86 __call__
return CheckpointinitialValue(
AppData\Roaming\Python\python39\site-packages\tensorflow\python\training\tracking\base.py:122 __init__
self.wrapped_value.set_shape(shape)
AppData\Roaming\Python\python39\site-packages\tensorflow\python\framework\ops.py:1238 set_shape
raise ValueError(
ValueError: Tensor's shape (26,400) is not compatible with supplied shape [26,200]
我什至不确定 400 来自哪里,我意识到我的一个图层上有一个零,但是当我删除它时,错误仍然保持不变。 我所做的新更改是:
def build_model(hp):
model = Sequential()
for i in range(hp.Int('num_layers',4,5)):
# if i == 1:
# model.add(Dense(units=hp.Int('units_' + str(i),# min_value=20,# max_value=500,# step=20),# input_dim=26,# activation='relu'))
# else:
model.add(Dense(units=hp.Int('units_' + str(i),min_value=20,max_value=500,step=20),activation='relu'))
model.add(Dense(6,optimizer=keras.optimizers.Adam(
hp.Choice('learning_rate',[1e-2,1e-3,1e-4])),metrics=['accuracy'])
return model
仍然有 400 来自某个地方,有人可以告诉我它是从哪里来的吗?
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。