Keras “如何修复”;+;的操作数类型不受支持:';非类型';和';int'&引用;错误
运行此函数时:Keras “如何修复”;+;的操作数类型不受支持:';非类型';和';int'&引用;错误,keras,python-3.6,lstm,Keras,Python 3.6,Lstm,运行此函数时: def run_lstm(x_train,x_test,y_train,y_test): model = tf.keras.models.Sequential() model.add(tf.keras.layers.LSTM(500)) # model.add(tf.keras.layers.Dropout(0.5)) model.add(tf.keras.layers.Dense(18, activation='sigmoid')) mod
def run_lstm(x_train,x_test,y_train,y_test):
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(500))
# model.add(tf.keras.layers.Dropout(0.5))
model.add(tf.keras.layers.Dense(18, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_test,y_test))
score = model.evaluate(x_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
我得到这个错误:
Traceback (most recent call last):
File "/Users/khaled/Documents/GitHub/deep-learning-for-human-activity-recognition-using-skeleton-datasets/train.py", line 294, in <module>
run_lstm(x_train, x_test, y_train, y_test)
File "/Users/khaled/Documents/GitHub/deep-learning-for-human-activity-recognition-using-skeleton-datasets/train.py", line 277, in run_lstm
model.fit(x_train, y_train, batch_size=32, epochs=10, validation_data=(x_test,y_test))
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1509, in fit
validation_split=validation_split)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 993, in _standardize_user_data
class_weight, batch_size)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1029, in _standardize_weights
self._set_inputs(x)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py", line 426, in _method_wrapper
method(self, *args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/training.py", line 1222, in _set_inputs
self.build(input_shape=input_shape)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/sequential.py", line 222, in build
layer.build(shape)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/utils/tf_utils.py", line 149, in wrapper
output_shape = fn(instance, input_shape)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/layers/recurrent.py", line 552, in build
self.cell.build(step_input_shape)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/utils/tf_utils.py", line 149, in wrapper
output_shape = fn(instance, input_shape)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/layers/recurrent.py", line 1934, in build
constraint=self.kernel_constraint)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 586, in add_weight
aggregation=aggregation)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/training/checkpointable/base.py", line 591, in _add_variable_with_custom_getter
**kwargs_for_getter)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1986, in make_variable
aggregation=aggregation)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 145, in __call__
return cls._variable_call(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 141, in _variable_call
aggregation=aggregation)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 120, in <lambda>
previous_getter = lambda **kwargs: default_variable_creator(None, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/variable_scope.py", line 2434, in default_variable_creator
import_scope=import_scope)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/variables.py", line 147, in __call__
return super(VariableMetaclass, cls).__call__(*args, **kwargs)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 297, in __init__
constraint=constraint)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/resource_variable_ops.py", line 411, in _init_from_args
initial_value(), name="initial_value", dtype=dtype)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/keras/engine/base_layer.py", line 1970, in <lambda>
shape, dtype=dtype, partition_info=partition_info)
File "/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/python/ops/init_ops.py", line 470, in __call__
scale /= max(1., (fan_in + fan_out) / 2.)
TypeError: unsupported operand type(s) for +: 'NoneType' and 'int'
回溯(最近一次呼叫最后一次):
文件“/Users/khaled/Documents/GitHub/deep learning for human activity recognition using skeleton dataset/train.py”,第294行,中
运行lstm(x_列、x_测试、y_列、y_测试)
文件“/Users/khaled/Documents/GitHub/deep learning for human activity recognition using skeleton dataset/train.py”,第277行,run_lstm
模型拟合(x_序列,y_序列,批量大小=32,历次=10,验证数据=(x_测试,y_测试))
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/training.py”,第1509行
验证分割=验证分割)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/training.py”,第993行,在用户数据中
类别(重量、批次大小)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/Python/keras/engine/training.py”,第1029行,在
自设置输入(x)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/training/checkpointable/base.py”,第426行,在方法包装中
方法(self、*args、**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site-packages/tensorflow/Python/keras/engine/training.py”,第1222行,在集合输入中
自我构建(输入形状=输入形状)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/sequential.py”,第222行,内部版本
层。构建(形状)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/utils/tf_utils.py”,第149行,在包装器中
输出形状=fn(实例,输入形状)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/layers/recurrent.py”,第552行,内部版本
self.cell.build(步骤\输入\形状)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/utils/tf_utils.py”,第149行,在包装器中
输出形状=fn(实例,输入形状)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/layers/recurrent.py”,第1934行,内部版本
constraint=self.kernel\u约束)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/base_layer.py”,第586行,在add_weight中
聚合=聚合)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/training/checkpointable/base.py”,第591行,在“添加变量”和“自定义”getter中
**kwargs_用于(获取者)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/base_layer.py”,第1986行,在make_变量中
聚合=聚合)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/variables.py”,第145行,在__
返回cls.\u变量\u调用(*args,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/variables.py”,第141行,在变量调用中
聚合=聚合)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/variables.py”,第120行,在
上一个\u getter=lambda**kwargs:默认\u变量\u创建者(无,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/variable\u scope.py”,第2434行,默认为变量\u creator
导入范围=导入范围)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/variables.py”,第147行,在__
返回super(VariableMetaclass,cls)。\调用(*args,**kwargs)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/resource_variable_ops.py”,第297行,在u_init中__
约束=约束)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/resource_variable_ops.py”,第411行,在参数的_init_中
初始值(),name=“初始值”,dtype=dtype)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/keras/engine/base_layer.py”,第1970行,在
形状,数据类型=数据类型,分区信息=分区信息)
文件“/Library/Frameworks/Python.framework/Versions/3.6/lib/python3.6/site packages/tensorflow/Python/ops/init_ops.py”,第470行,在__
比例/=最大值(1.,(扇入+扇出)/2.)
TypeError:不支持+:“NoneType”和“int”的操作数类型
我应该换什么
谢谢。我在代码中添加了两行代码,解决了这个问题:
x_train = x_train.reshape(x_train.shape[0], x_train.shape[1], 1)
x_test = x_test.reshape(x_test.shape[0], x_test.shape[1], 1)
该功能将是:
def run_lstm(x_train,x_test,y_train,y_test):
x_train = x_train.reshape(x_train.shape[0], x_train.shape[1], 1)
x_test = x_test.reshape(x_test.shape[0], x_test.shape[1], 1)
model = tf.keras.models.Sequential()
model.add(tf.keras.layers.LSTM(50))
# model.add(tf.keras.layers.Dropout(0.5))
# model.add(tf.keras.layers.Flatten())
model.add(tf.keras.layers.Dense(18, activation='sigmoid'))
model.compile(loss='binary_crossentropy',
optimizer='rmsprop',
metrics=['accuracy'])
model.fit(x_train, y_train, batch_size=300, epochs=2, validation_data=(x_test,y_test))
score = model.evaluate(x_test, y_test)
print('Test loss:', score[0])
print('Test accuracy:', score[1])
您能否在函数中打印x_列、x_测试、y_列和y_测试的形状,并将结果添加到问题中?此外,如果不是这样的话,我建议使用tab缩进函数中的代码。事实上,问题在于我的数据集的维度:它是dim=2,而不是tensorflow中张量的输入大小3。