问题描述
我正在尝试在AMD GPU(AMD Vega 20,Tensorflow 2.2.0,Keras 2.4.3)上使用Keras包装器运行简单的顺序Tensorflow模型,但是在尝试适应时遇到了一个奇怪的问题:
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 15 values,but the requested shape has 15976860750
似乎将批处理大小作为输入张量的值数量,并且“请求形状”的大小以某种方式爆炸。模型定义如下:
def create_model(optimizer='rmsprop',init='glorot_uniform'):
# create model
model = Sequential()
model.add(Dense(12,input_dim=8,kernel_initializer=init,activation='relu'))
model.add(Dense(8,activation='relu'))
model.add(Dense(1,activation='sigmoid'))
# Compile model
model.compile(loss='binary_crossentropy',optimizer=optimizer,metrics=['accuracy'])
return model
modelClf = KerasClassifier(build_fn=create_model,verbose=1,batch_size=15,epochs=9)
如果我仅在未安装GPU的计算机上的cpu上运行,则完全相同的模型也可以正常工作。它也可以与另一台运行NVidia GPU(使用Tensorflow 1.15.3和Keras 2.3.1)的计算机上的CUDA11实现良好配合。
我不知道为什么只有在存在AMD GPU的情况下,为什么才会在以后的Tensorflow版本中要求将GPU内存大小作为输入大小。是否有明显的地方配置错误?
编辑:为响应以下评论,在进行一些调整后,“请求的大小”与批处理大小有关,而不是与GPU内存有关(该数字显然是巧合-将批处理大小设置为10会给出“要求的尺寸”代替1092616192)。输入只是一个简单的熊猫数据帧,每行有8个值(由input_dim定义,如上所述,在其他机器上的相同实现也可以正常工作)。
在调用fit()进行训练的过程中发生错误-从输出中可以看到,它像这样崩溃之前大约有5个时期。追溯是:(“〜/ rocm / keras”只是我为此环境安装python软件包的路径)
File "~/rocm/keras/tensorflow/python/keras/wrappers/scikit_learn.py",line 223,in fit
return super(KerasClassifier,self).fit(x,y,**kwargs)
File "~/rocm/keras/tensorflow/python/keras/wrappers/scikit_learn.py",line 166,in fit
history = self.model.fit(x,**fit_args)
File "~/rocm/keras/tensorflow/python/keras/engine/training.py",line 66,in _method_wr apper
return method(self,*args,**kwargs)
File "~/rocm/keras/tensorflow/python/keras/engine/training.py",line 848,in fit
tmp_logs = train_function(iterator)
File "~/rocm/keras/tensorflow/python/eager/def_function.py",line 580,in __call__
result = self._call(*args,**kwds)
File "~/rocm/keras/tensorflow/python/eager/def_function.py",line 611,in _call
return self._stateless_fn(*args,**kwds) # pylint: disable=not-callable
File "~/rocm/keras/tensorflow/python/eager/function.py",line 2420,in __call__
return graph_function._filtered_call(args,kwargs) # pylint: disable=protected-access
File "~/rocm/keras/tensorflow/python/eager/function.py",line 1665,in _filtered_call
self.captured_inputs)
File "~/rocm/keras/tensorflow/python/eager/function.py",line 1746,in _call_flat
ctx,args,cancellation_manager=cancellation_manager))
File "~/rocm/keras/tensorflow/python/eager/function.py",line 598,in call
ctx=ctx)
File "~/rocm/keras/tensorflow/python/eager/execute.py",line 60,in quick_execute
inputs,attrs,num_outputs)
tensorflow.python.framework.errors_impl.InvalidArgumentError: Input to reshape is a tensor with 10 values,but the requested shape has 1092616192
解决方法
暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!
如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。
小编邮箱:dio#foxmail.com (将#修改为@)