当前位置: 首页 > 知识库问答 >
问题:

获取了意外的关键字参数形状

齐冥夜
2023-03-14

在我下面的代码中

class cnnUtils:

    def get_weight(shape):
        init=tf.truncated_normal(shape,stddev=0.1)
        return tf.Variable(init)
    def get_bias(shape):
        init=tf.constant(0.1,shape=shape)
        return tf.Variable(init)
    def conv2d(x,w):
        return tf.nn.conv2d(x,w,strides=[1,1,1,1],padding="SAME")
    def maxpool_2d(x):
        return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")
    def conv_layer(input,shape):
        b=get_bias([shape[3]])
        w=get_weight(shape)
        return tf.nn.relu(conv2d(input,w)+b)
    def full_layer(input,size):
        in_size=int(input.get_shape()[1])
        w=get_weight([in_size,size])
        b=get_bias([size])
        return tf.matmul(input,w)+b
utils=CnnUtils()
x=tf.placeholder(tf.float32,shape=[None,32,32,3])
y=tf.placeholder(tf.float32,shape=[None,10])
conv1=utils.conv_layer(x,shape=[5,5,3,32])

我得到以下错误

TypeError Traceback(最近的调用最后)在----

TypeError:conv_layer()获得意外的关键字参数“shape”

但是当我移动class关键字并将代码用作简单的函数调用时

conv1=conv_层(x,形状=[5,5,3,32])

Erors完成了。有人能告诉我这里发生了什么吗?我的理解是,“形”这个关键词在这里一塌糊涂。

共有1个答案

能文华
2023-03-14

如果conv_layer作为CnnUtils类的方法,conv_layer方法的第一个参数input指的是CnnUtils类的实例。因此,当您调用utils时。conv_层(x,shape=[5,5,3,32]),x被指定为shape的值。[只需在conv_layer方法中打印输入和形状的值即可]。因此,工作实施如下:

import tensorflow as tf


class CnnUtils:

    def get_weight(self, shape):
        init=tf.truncated_normal(shape,stddev=0.1)
        return tf.Variable(init)

    def get_bias(self, shape):
        init=tf.constant(0.1,shape=shape)
        return tf.Variable(init)

    def conv2d(self, x, w):
        return tf.nn.conv2d(x,w,strides=[1,1,1,1],padding="SAME")

    def maxpool_2d(self, x):
        return tf.nn.max_pool(x,ksize=[1,2,2,1],strides=[1,2,2,1],padding="SAME")

    def conv_layer(self, input, shape):
        b=self.get_bias([shape[3]])
        w=self.get_weight(shape)
        return tf.nn.relu(self.conv2d(input,w)+b)

    def full_layer(self, input, size):
        in_size=int(input.get_shape()[1])
        w=self.get_weight([in_size,size])
        b=self.get_bias([size])
        return tf.matmul(input,w)+b


utils=CnnUtils()
x=tf.placeholder(tf.float32,shape=[None,32,32,3])
y=tf.placeholder(tf.float32,shape=[None,10])
conv1=utils.conv_layer(x, shape=[5,5,3,32])
 类似资料:
  • 当我试图使用dataframe to_csv函数中的一些参数时,它抛出了一个TypeError,例如'TypeError:to_csv()得到了一个意外的关键字参数'doublequote' 或 我的熊猫版本是0.19。2(使用检查)我正在使用 以下官方文件基于0.19。2.尽管我有类型错误,但声明这些参数可以用作可选参数。http://pandas.pydata.org/pandas-docs/

  • 这是错误: 我想使用像你在代码中看到的cookie,但我不能,有人能帮我吗?

  • 下面看似简单的代码抛出以下错误 回溯(最近一次调用last):文件“search.py”,第48行,pageToken=page_token)。方法中的第716行执行()文件“C:\Users\Choi\AppData\Local\Programs\Python\Python37\lib\site packages\GoogleAppClient\discovery.py” raise TypeE

  • 我正在尝试转换大熊猫的unix时间。我从一个csv文件中读取了这个,但是当我试图转换它时,我得到了上面的错误。 完全回溯 附加信息: 熊猫的版本是:0.8。0 操作系统:Debian,使用sudo apt get install python pandas安装(根据官方网站) 样本数据

  • 我尝试使用pandas DataFrame的pivot_table方法; 但是,我收到以下错误: 上述命令摘自Wes McKinney(pandas的创建者)的《Python用于数据分析》一书

  • 问题内容: 升级到Django 1.10后,出现错误。 我的看法如下: 这是完整的回溯: 问题答案: 中的参数在Django 1.8 中已弃用,在Django 1.10中已删除。 解决方案是切换到快捷方式,该快捷方式会自动使用。 更新您的导入并按如下所示进行查看。注意,将对象作为其第一个参数。 该快捷方式是Django 1.3中引入的,因此此更改与Django的较早版本兼容。