ghost1018 2021-04-22 21:48 采纳率: 0%
浏览 155

神经网络代码问题(残差神经网络,tensorflow,keras)

自己搭建的网络运行报错,不知道原因,希望大家指点一下,代码如下:

def conv_block(inputs, 

        filters, 

        use_bias,

        kernel_size,

        padding= 'same',

        strides= (1, 1),

        with_conv_short_cut = False):

    conv1 = Conv2D(

        filters=filters,

        kernel_size=kernel_size,

        activation= 'relu',

        strides= strides,

        use_bias= use_bias,

        padding= padding,

        kernel_regularizer=regularizers.l2(weight_decay),

    )(inputs)

    conv1 = BatchNormalization(axis = 1)(conv1)

 

    conv2 = Conv2D(

        filters=filters,

        kernel_size=kernel_size,

        activation= 'relu',

        use_bias= use_bias,

        padding= padding,

        kernel_regularizer=regularizers.l2(weight_decay))(conv1)

    conv2 = BatchNormalization(axis = 1)(conv2)

 

    if with_conv_short_cut:

        inputs = Conv2D(

            filters=filters,

            kernel_size=kernel_size,

            strides= strides,

            use_bias= use_bias,

            padding= padding,

            kernel_regularizer=regularizers.l2(weight_decay)

            )(inputs)

        return add([inputs, conv2])

 

    else:

        return add([inputs, conv2])


 

weight_decay = 0.001

def resvgg16(input_shape=(28,28,1),classes=10):

    X_input = Input(input_shape)

    #x = ZeroPadding2D((1, 1))(X_input)

    x=X_input

 

    # Define the converlutional block 1

    x = Conv2D(filters=64,kernel_size=(3,3),strides= (2, 2), activation= 'relu',padding= 'same',kernel_regularizer=regularizers.l2(weight_decay))(x)

    x = BatchNormalization(axis= 1)(x)

    x = conv_block(x, filters= 64, kernel_size=(3,3),use_bias= True)

    x = MaxPooling2D(pool_size= (3, 3), strides= (2, 2), padding= 'same')(x)

    x = Dropout(0.3)(x)

 

    # Define the converlutional block 2

    x = conv_block(x, filters= 128,  kernel_size=(3,3),use_bias= True, strides= (2, 2), with_conv_short_cut= True)

    x = conv_block(x, filters= 128,  kernel_size=(3,3),use_bias= True)

    x = MaxPooling2D(pool_size= (3, 3), strides= (2, 2), padding= 'same')(x)

    x = Dropout(0.4)(x)

 

    # Define the converlutional block 3

    x = conv_block(x, filters= 256,  kernel_size=(3,3),use_bias= True, strides= (2, 2), with_conv_short_cut= True)

    x = conv_block(x, filters= 256,  kernel_size=(3,3),use_bias= True)

    x = conv_block(x, filters= 256,  kernel_size=(3,3),use_bias= True)

    #brach2 =  MaxPooling2D(pool_size= (3, 3), strides= (2, 2), padding= 'same')(brach2)

    x = MaxPooling2D(pool_size= (3, 3), strides= (2, 2), padding= 'same')(x)

    x = Dropout(0.4)(x)


 

    # Define the converlutional block 4

    x = conv_block(x, filters= 512,  kernel_size=(3,3),use_bias= True, strides= (2, 2), with_conv_short_cut= True)

    x = conv_block(x, filters= 512,  kernel_size=(3,3),use_bias= True)

    x = conv_block(x, filters= 512,  kernel_size=(3,3),use_bias= True)

    x = conv_block(x, filters= 512,  kernel_size=(3,3),use_bias= True)

    x = MaxPooling2D(pool_size= (3, 3), strides= (2, 2), padding= 'same')(x)

    x = Dropout(0.4)(x)

    

 

    x = Flatten()(x)

    x = Dense(1000, kernel_regularizer=regularizers.l2(weight_decay),activation='relu')(x)

    x = BatchNormalization(axis= 1)(x)

    x = Dense(512, kernel_regularizer=regularizers.l2(weight_decay),activation='relu')(x)

    x = BatchNormalization(axis= 1)(x)

    #x = concatenate([des1, des2, des3, des4], axis=3)

    #x = Flatten()(x)

    x = Dense(10, activation='softmax')(x)

    

   

    model = Model(inputs=X_input,outputs=X,name='resvgg16')

 

    return model

#model=resvgg16()

# Print the detail of the model

model = resvgg16(input_shape=(28,28,1),classes=10)

# compile the model 

model.compile(optimizer='adam', loss='categorical_crossentropy', metrics=['acc',top_k_categorical_accuracy])

history=model.fit(X_train1,y_train,epochs=28,batch_size=128,verbose=2)

model.save('resvgg16.h5')

#在测试集上评估并保存权重文件

model.evaluate(X_test1, y_test,128)

报错详细信息:

Traceback (most recent call last):
  File "c:/Users/dell/Documents/daima.py/code/tree1/res+vgg16.py", line 487, in <module>
    model = resvgg16(input_shape=(28,28,1),classes=10)
  File "c:/Users/dell/Documents/daima.py/code/tree1/res+vgg16.py", line 482, in resvgg16
    model = Model(inputs=X_input,outputs=X,name='resvgg16')
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\keras\engine\training.py", line 167, in __init__
    super(Model, self).__init__(*args, **kwargs)
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\keras\engine\network.py", line 173, in __init__
    self._init_graph_network(*args, **kwargs)
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\training\tracking\base.py", line 456, in _method_wrapper
    result = method(self, *args, **kwargs)
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\keras\engine\network.py", line 254, in _init_graph_network
    base_layer_utils.create_keras_history(self._nested_outputs)
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\keras\engine\base_layer_utils.py", line 186, in create_keras_history
    _, created_layers = _create_keras_history_helper(tensors, set(), [])
  File "D:\conda\envs\tensorflow2.2\lib\site-packages\tensorflow\python\keras\engine\base_layer_utils.py", line 212, in _create_keras_history_helper
    op = tensor.op  # The Op that created this Tensor.
AttributeError: 'numpy.ndarray' object has no attribute 'op'

  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2022-09-07 17:13
    关注
    不知道你这个问题是否已经解决, 如果还没有解决的话:

    如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 以帮助更多的人 ^-^
    评论

报告相同问题?

悬赏问题

  • ¥20 腾讯企业邮箱邮件可以恢复么
  • ¥15 有人知道怎么将自己的迁移策略布到edgecloudsim上使用吗?
  • ¥15 错误 LNK2001 无法解析的外部符号
  • ¥50 安装pyaudiokits失败
  • ¥15 计组这些题应该咋做呀
  • ¥60 更换迈创SOL6M4AE卡的时候,驱动要重新装才能使用,怎么解决?
  • ¥15 让node服务器有自动加载文件的功能
  • ¥15 jmeter脚本回放有的是对的有的是错的
  • ¥15 r语言蛋白组学相关问题
  • ¥15 Python时间序列如何拟合疏系数模型