04
Апр
2018

переработка 2D матрицы в 3D тензор

Данные: https://www.dropbox.com/s/blnbr93dj2p6l9i/main_frame.csv?dl=0

У меня есть нейросеть (p_algo) , чей первый слой - GRU (в качестве инпута берёт трёхмерный тензор)

from keras.models import Sequential
from keras import layers
from keras.optimizers import RMSprop
from keras.layers import Dense

model = Sequential()
model.add(layers.GRU(32,input_shape=(None,x_train.shape[1])))
model.add(layers.Dense(1))
model.compile(optimizer=RMSprop(), loss='mse',metrics=["mae"])

так же у меня есть текст , который я прогоняю через одну Word2Vec модель:

import pandas as pd
from keras import preprocessing
from keras.layers import Embedding
from sklearn.feature_extraction.text import CountVectorizer
from scipy.sparse import hstack
import numpy as np

df=pd.read_csv(r"C:\Users\neir0\Desktop\ez\bitcoin_analyzer\data\main_frame.csv")
timeDF=pd.DataFrame()
timeDF['year']=df['year']
timeDF['month']=df['month']
timeDF['day']=df['day']

target=df['price'].astype(float)
df.drop('price',axis=1,inplace=True)
#x=df["content"]

max_features = 100000
maxlen = 100

df['content'] = df['content'].apply(review_to_wordlist)

model = word2vec.Word2Vec(df['content'], size=300, window=10, workers=4)
w2v = dict(zip(model.wv.index2word, model.wv.syn0))

class mean_vectorizer(object):
    def __init__(self, word2vec):
        self.word2vec = word2vec
        self.dim = len(next(iter(w2v.values())))

    def fit(self, X):
        return self

    def transform(self, X):
        return np.array([
            np.mean([self.word2vec[w] for w in words if w in self.word2vec]
                    or [np.zeros(self.dim)], axis=0)
            for words in X
            ])

data_mean = mean_vectorizer(w2v).fit(df['content']).transform(df['content'])

(матрица 'data_mean')результат прогона текста через вышеописанную doc2vec модель таков :

    [[-0.08047525  0.01411286 -0.06656939 ..., -0.231206    0.31802803
  -0.19065298]
 [-0.41409743  0.44074249 -0.06094786 ...,  0.12561914  0.13780168
  -0.15565442]
 [-0.24603187  0.30973208 -0.0579795  ..., -0.11605985  0.01822449
  -0.15301046]
 ..., 
 [-0.15998596  0.31458825  0.04815514 ..., -0.04552199  0.07341675
   0.03051332]
 [-0.01172509 -0.02052472 -0.04189054 ..., -0.38025522  0.3240979
  -0.16403493]
 [-0.11753593  0.15857394  0.04633277 ..., -0.262476   -0.03610909
  -0.00918387]]

позже я делаю

l_m=hstack([data_mean,timeDF]) 

теперь мне нужно "скормить" нейронке с GRU l_m матрицу , но я не знаю как, так как l_m 2D матрица , а вышеупомянутая нейронка ожидает 3D тензор. Напишите пожалуйста , что нужно сделать с l_m матрицей , чтобы она стала 3D тензором . Или как её засунуть в нейросеть

Источник: https://ru.stackoverflow.com/questions/809437/%D0%BF%D0%B5%D1%80%D0%B5%D1%80%D0%B0%D0%B1%D0%BE%D1%82%D0%BA%D0%B0-2d-%D0%BC%D0%B0%D1%82%D1%80%D0%B8%D1%86%D1%8B-%D0%B2-3d-%D1%82%D0%B5%D0%BD%D0%B7%D0%BE%D1%80

Тебе может это понравится...

Добавить комментарий