这个问题似乎很简单,但我找不到任何解决方案。
说我有一个没有标题的CSV文件。
121
334
313
930
Run Code Online (Sandbox Code Playgroud)
我想像这样0在底部添加/添加新行
121
334
313
930
0
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下方法,但未成功。
import pandas as pd
import os
folder_path = "/home/Ling/test/"
df = pd.read_fwf(folder_path + "test1.csv", usecols=[0], delimiter=",")
df2 = pd.DataFrame([[0]], dtype=int)
print df.append(df2, ignore_index=True)
Run Code Online (Sandbox Code Playgroud)
结果
NaN 121
NaN 334
NaN 313
NaN 930
0.0 NaN
Run Code Online (Sandbox Code Playgroud)
我正在关注这个例子
我什至尝试将更[[0]]改为[[0,]],[[,0]]但没有成功。我在代码中有什么想念的吗?
感谢您的帮助和建议。
我试图在 Keras 上以双精度运行 LeNet,但它失败并出现错误:TypeError: Input 'filter' of 'Conv2D' Op has type float64 that does not match type float32 of argument 'input'.. 我使用的代码如下:
import numpy as np
from sklearn.utils import shuffle
import keras
from keras.models import Sequential
from keras.layers import Input, Dense, Conv2D, MaxPooling2D, Dropout,Flatten
from keras import backend as K
from keras.models import Model
from keras.utils import np_utils
import time
import tensorflow as tf
K.set_floatx('float64') # Note: the code works if we comment this line, i.e., with single …Run Code Online (Sandbox Code Playgroud) 我正在采用预训练的 CNN 模型,然后尝试使用并行 CNN 实现 CNN-LSTM,所有这些并行 CNN 都具有相同的预训练权重。
# load in CNN
weightsfile = 'final_weights.h5'
modelfile = '2dcnn_model.json'
# load model from json
json_file = open(modelfile, 'r')
loaded_model_json = json_file.read()
json_file.close()
fixed_cnn_model = keras.models.model_from_json(loaded_model_json)
fixed_cnn_model.load_weights(weightsfile)
# remove the last 2 dense FC layers and freeze it
fixed_cnn_model.pop()
fixed_cnn_model.pop()
fixed_cnn_model.trainable = False
print(fixed_cnn_model.summary())
This will produce the summary:
Run Code Online (Sandbox Code Playgroud)
_
________________________________________________________________
Layer (type) Output Shape Param #
=================================================================
input_1 (InputLayer) (None, 32, 32, 4) 0
_________________________________________________________________
conv2d_1 (Conv2D) (None, 30, 30, 32) …Run Code Online (Sandbox Code Playgroud) 目标是预测 87601 个时间步长(10 年)和 9 个目标的时间序列 Y。输入特征 X(外源输入)是 87600 个时间步长的 11 个时间序列。输出还有一个时间步长,因为这是初始值。时间步 t 处的输出 Yt 取决于输入 Xt 和先前的输出 Yt-1。
因此,模型应如下所示:模型布局
我只能找到这个线程:LSTM: How to feed the output back to the input? 第4068章 我尝试使用 Keras 实现此功能,如下所示:
def build_model():
# Input layers
input_x = layers.Input(shape=(features,), name='input_x')
input_y = layers.Input(shape=(targets,), name='input_y-1')
# Merge two inputs
merge = layers.concatenate([input_x,input_y], name='merge')
# Normalise input
norm = layers.Lambda(normalise, name='scale')(merge)
# Hidden layers
x = layers.Dense(128, input_shape=(features,))(norm)
# Output layer
output = layers.Dense(targets, activation='relu', name='output')(x) …Run Code Online (Sandbox Code Playgroud) 我有以下使用功能 API 的 Keras LSTM 模型:
model = Sequential()
model.add(Lambda(lambda x: x,input_shape=(timestep,n_feature)))
output = model.output
output = LSTM(8)(output)
output = Dense(2)(output)
inputTensor = model.input
myModel = Model([inputTensor], output)
myModel.compile(loss='mean_squared_error', optimizer='adam')
myModel.fit([trainX], trainY, epochs=100, batch_size=1, verbose=2, validation_split = 0.1)
Run Code Online (Sandbox Code Playgroud)
该模型工作正常,但我认为我的架构中有多余的语法。例如,Lambda 层仅用于定义 input_shape,也许可以将其删除?上面的代码可以简化/清理吗(我想继续使用函数式API)?谢谢!
我了解在IMDB审阅分类中只有一个文本功能的情况下如何使用Keras嵌入层。但是,当我遇到一个分类问题(其中有多个文本功能)时,我对如何使用嵌入层感到困惑。例如,我有一个具有2个文本特征“诊断文本”和“请求的过程”的数据集,并且标签是二进制类(1表示批准,0表示未批准)。在下面的示例中,与IMDB数据集不同,x_train具有2列“诊断”和“过程”。我是否需要创建2个嵌入层,其中一个用于诊断和过程?如果是这样,将需要更改哪些代码?
x_train = preprocessing.sequences.pad_sequences(x_train, maxlen=20)
x_test = preprocessing.sequences.pad_sequences(x_test, maxlen=20)
model = Sequential()
model.add(Embedding(10000,8,input_length=20)
model.add(Flatten())
model.add(Dense(1, activation='sigmoid')
model.compile(optimizer='rmsprop', loss='binary_crossentropy', metrics=['acc'])
model.fit(x_train, y_train, epochs=10, batch_size=32, validation_split=0.2)
Run Code Online (Sandbox Code Playgroud) 我正在尝试学习使用 Keras 模型 API 来修改经过训练的模型,以便随时随地对其进行微调:
一个非常基本的模型:
inputs = Input((x_train.shape[1:]))
x = BatchNormalization(axis=1)(inputs)
x = Flatten()(x)
outputs = Dense(10, activation='softmax')(x)
model1 = Model(inputs, outputs)
model1.compile(optimizer=Adam(lr=1e-5), loss='categorical_crossentropy', metrics=['categorical_accuracy'])
Run Code Online (Sandbox Code Playgroud)
它的架构是
InputLayer -> BatchNormalization -> Flatten -> Dense
在对它进行一些训练批次之后,我想在 Flatten 和输出之间添加一些额外的 Dense 层:
x = Dense(32,activation='relu')(model1.layers[-2].output)
outputs = model1.layers[-1](x)
Run Code Online (Sandbox Code Playgroud)
但是,当我运行它时,我得到了这个:
ValueError:输入 0 与层密集_1 不兼容:输入形状的预期轴 -1 具有值 784 但得到形状(无,32)
有人可以解释一下发生了什么以及如何/是否可以向已经训练好的模型添加层?
谢谢
从PyTorch Seq2Seq教程,http: //pytorch.org/tutorials/intermediate/seq2seq_translation_tutorial.html#attention-decoder
我们看到注意机制严重依赖于MAX_LENGTH参数来确定输出维数attn -> attn_softmax -> attn_weights,即
class AttnDecoderRNN(nn.Module):
def __init__(self, hidden_size, output_size, dropout_p=0.1, max_length=MAX_LENGTH):
super(AttnDecoderRNN, self).__init__()
self.hidden_size = hidden_size
self.output_size = output_size
self.dropout_p = dropout_p
self.max_length = max_length
self.embedding = nn.Embedding(self.output_size, self.hidden_size)
self.attn = nn.Linear(self.hidden_size * 2, self.max_length)
self.attn_combine = nn.Linear(self.hidden_size * 2, self.hidden_size)
self.dropout = nn.Dropout(self.dropout_p)
self.gru = nn.GRU(self.hidden_size, self.hidden_size)
self.out = nn.Linear(self.hidden_size, self.output_size)
Run Code Online (Sandbox Code Playgroud)
进一步来说
self.attn = nn.Linear(self.hidden_size * 2, self.max_length)
Run Code Online (Sandbox Code Playgroud)
我理解MAX_LENGTH变量是减少no的机制.需要训练的参数AttentionDecoderRNN.
如果我们没有MAX_LENGTH预先决定.我们应该用什么值初始化attn图层? …
machine-translation recurrent-neural-network attention-model sequence-to-sequence pytorch
假设我加载了 inception,我需要在分类之前提取最终描述符。所以给出这样一个简单的代码:
cnn = InceptionV3(weights='imagenet',
include_top='False',
pooling='avg')
cnn.predict(x, batch_size=32, verbose=0)
Run Code Online (Sandbox Code Playgroud)
如何在预测期间提取最后一层?
我正在尝试实现一个连体网络(通过使用三元组损失方法)。我就是不能让它训练。经过多次尝试,我想我的问题出现在生成器中(我准备输入数据流用于训练),但到目前为止我无法定位问题。帮助!:)
这是我的模型定义(它基于 ResNet50)。
model = ResNet50(weights='imagenet')
model.layers.pop()
for layer in model.layers:
layer.trainable = False
x = model.get_layer('flatten_1').output
model_out = Dense(128, activation='sigmoid', name='model_out')(x)
new_model = Model(inputs=model.input, outputs=model_out)
Run Code Online (Sandbox Code Playgroud)
这里我定义了要训练的模型:
anchor_in = Input(shape=(224, 224, 3))
positive_in = Input(shape=(224, 224, 3))
negative_in = Input(shape=(224, 224, 3))
anchor_out = new_model(anchor_in)
positive_out = new_model(positive_in)
negative_out = new_model(negative_in)
merged_vector = concatenate([anchor_out, positive_out, negative_out], axis=-1)
# Define the model to be trained
siamese_model = Model(inputs=[anchor_in, positive_in, negative_in],
outputs=merged_vector)
siamese_model.compile(optimizer=Adam(lr=.001), loss=triplet_loss)
Run Code Online (Sandbox Code Playgroud)
能够训练模型。我需要使用生成器为它提供数据,这是我定义它的方式:
(请注意,我特意在每个文件夹中只放了 1 张图片只是为了开始。如果可以的话,我稍后会增加每个文件夹中的 # 个图片。)
def generator_three_imgs(): …Run Code Online (Sandbox Code Playgroud) machine-learning keras tensorflow convolutional-neural-network
keras ×8
tensorflow ×4
append ×1
convolutional-neural-network ×1
dataframe ×1
descriptor ×1
extraction ×1
lstm ×1
output ×1
pandas ×1
python ×1
pytorch ×1
time-series ×1
word2vec ×1