近期python与keras问题汇总190905

近期python问题汇总

  • python错误提示“non-default argument follows default argument”
  • pandas.read_csv() 报错 OSError: Initializing from file failed
  • ValueError:Input 0 is incompatible with layer lstm_1: expected ndim=3,found ndim=4
  • 多输入模型
  • python 导入数据错误:UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb5 in position 0: invalid start

python错误提示“non-default argument follows default argument”

含有默认值的参数必须放到不含默认值的后面。

def ConvBNReluUnit(kernel_size = 8,index = 0,num=1,input):

解决:调换一下参数的位置

def ConvBNReluUnit(input1,kernel_size = 8,index = 0,num=1):

pandas.read_csv() 报错 OSError: Initializing from file failed

一般由两种情况引起:一种是函数参数为路径而非文件名称,另一种是函数参数带有中文。
学习

我出现问题是因为路径含有中文。
解决办法:

da4=pd.read_csv('F:\\工程清单.csv',engine='python')

ValueError:Input 0 is incompatible with layer lstm_1: expected ndim=3,found ndim=4

往模型里加lstm层,产生的错误
原因是lstm层需要3维数据,而我的是4维

下例:


res_stack_d (Conv2D) (None, 125, 2, 16) 784


res_stack_e (Conv2D) (None, 63, 2, 32) 1568


所以需要将其reshape维数为3维,这里用到keras内的Reshape函数

解决:

    model.add(Conv2D(64, kernel_size=(3, 1), strides=(2, 1), padding='valid'))
    model.add(Conv2D(64, kernel_size=(3, 1), strides=(1, 1), padding='same'))
    model.add(Reshape((60,64)))
    model.add(LSTM(units=100,return_sequences = True))

提前算好卷积层的输出,并进行reshape操作。
这里有一个误区:
为什么明明lstm层需要的是3维数据,而我这里的reshape内只有2维的(60,64)呢?
其实是这里少了一个None
正常的模型对样本个数都是不做固定要求的,输入模型的可以是(None,1024,1024)
模型中间层也可以处理类似(None,1024,1024)的输入
所以算上None刚好是三维,这里的Reshape函数就不考虑这个None,直接输入后面两维进行Reshape

多输入模型

参考链接
我理解如果要使用多输入模型或者类似Resnet的网络,就不能用

model = Sequential()

这种序列模型,而是应该直接用API模型,具体见
例如:

    sig_input = Input(shape=input_shape,name='Input')
    x = sig_input
    x = Conv2D(8, kernel_size=(3, 1), strides=(2, 1), padding='same', input_shape = (X_train.shape[1:]),name =conv_name_base+"a")(x)
    x = BatchNormalization(name=bn_name_base + 'a')(x)
    #x = add([x, sig_input])
    #x = Activation('relu')(x)
    x = Conv2D(8, kernel_size=(3, 1), strides=(1, 1), padding='same',name =conv_name_base+"b")(x)

python 导入数据错误:UnicodeDecodeError: ‘utf-8’ codec can’t decode byte 0xb5 in position 0: invalid start

https://blog.csdn.net/wang7807564/article/details/78164855
https://blog.csdn.net/qq_35892623/article/details/82941473
对我都用处不大,希望大家有好办法可以告诉我

我最后的解决办法只能是删掉函数文件内的中文注释。。。。

你可能感兴趣的:(Pyhton,Tensorflow)