我需要使用R的Keras后端函数进行一些操作,而k_pool2d
函数却出现以下类型错误:
library(keras)
m <- array(matrix(c(1, 1, 1, 0, 0,
0, 1, 1, 1, 0,
0, 0, 1, 1, 1,
0, 0, 1, 1, 0,
0, 1, 1, 0, 0), nrow=5, ncol=5, byrow=TRUE), dim=c(1, 5, 5, 1))
m <- k_constant(m)
k_pool2d(m, pool_size=c(2, 2), strides=c(1, 1), padding="valid", data_format="channels_last", pool_mode="max")
py_call_impl(可调用,dots $ args,dots $ keywords)错误:TypeError:只能将元组(而非“列表”)连接到元组
详细的回溯: 在pool2d中的文件“ /usr/local/share/.virtualenvs/r-tensorflow/lib/python2.7/site-packages/tensorflow/python/keras/backend.py”,行4613 步幅=(1,)+步幅+(1,)
我知道strides=c(1, 1)
是一个列表而不是一个元组,但是例如,pool_size=c(2, 2)
不会引发此错误。尝试使用k_conv2d
函数也不会引发此错误。
如果我尝试将c(1, 1)
转换为带有tuple(c(1, 1))
的元组,则会引发新的错误:
as.integer(strides)错误:无法将“ environment”类型强制为“ integer”类型的向量
此新错误是as.integer(tuple(c(1, 1)))
与m
类型(即“环境”)之间冲突的结果。
你们中有人遇到过同样的问题吗?
谢谢。